2.3. ワークフロー定義データ生成ツール¶
2.3.1. 概要¶
2.3.2. 前提¶
- ワークフロー設計ガイドに従ってワークフロー定義ファイルが作られていること
- ツールで出力するテーブル・カラム名称について、ワークフローライブラリで使用するテーブル・カラム名称と同一であること
2.3.3. ツール配置場所¶
本ツールはサンプルプロジェクトのtool/workflowDefinitionGeneratorディレクトリに配置されている。
配下のファイル/ディレクトリを以下に示す。
| ファイル/ディレクトリ | 説明 |
|---|---|
| output | 自動生成されるワークフロー定義データの出力ディレクトリ。 |
| resources | 本ツールの設定ファイル格納ディレクトリ。(利用の準備を参照) |
| log | エラー情報出力ファイルの出力ディレクトリ。 |
| WorkflowDefinitionGenerator_build.xml | 本ツールを実行するためのAntビルドファイル(通常、変更の必要なし)。 |
| WorkflowDefinitionGenerator_build.properties | Antビルドファイルのプロパティファイル。 |
2.3.4. 利用の準備¶
本ツールの設定ファイルに、実行に必要な設定を記述する。 設定ファイルは下記の通り。
| ファイル | 説明 |
|---|---|
| WorkflowDefinitionGenerator.config | 環境設定ファイル。(出力先ファイルパス、入力ファイル拡張子等を設定) |
| WorkflowDefinitionGenerator.xml | コンポーネント定義ファイル。 |
2.3.4.1. 環境設定ファイル¶
実行に必要な設定を行う。設定内容は下記の通り。
| キー名 | 設定内容 |
|---|---|
| inputFileDir | ワークフロー定義ファイルを格納するルートディレクトリ。 ツール実行時、ルートディレクトリ配下のファイルを再帰的に読み込む。 |
| inputFileExtension | 入力ファイルの拡張子。(カンマ区切りで設定)|br| 例:bpmn,xml |
| outputFilePath | 出力ファイルパス。 ※ファイルが既に存在する場合、既存の内容は破棄される。そのため、出力ファイルにワークフロー定義テーブル以外のデータを設定しないこと。 |
| logFilePath | エラー情報出力ファイルパス。 |
| workflowIdColumnLength | ワークフローID桁数。(※) |
| laneIdColumnLength | レーンID桁数。(※) |
| flowNodeIdColumnLength | フローノードID桁数。(※) |
| boundaryEventTriggerIdColumnLength | 境界イベントトリガーID桁数。(※) |
※ID体系で定義された桁数。ワークフロー定義ファイル内に定義したIDの桁数指定が正しいか精査を行うための設定値。
2.3.4.2. コンポーネント定義ファイル¶
コンポーネント定義ファイルには以下の設定が記載されている。
- Reader、Writerクラスの設定
- モデリングツール上で入力する条件クラス用省略記法の設定
上記設定を変更する場合、プロジェクト固有の設定についてを参照。
2.3.5. 利用手順¶
2.3.5.1. ツール実行¶
ツールは以下のように実行する。
ant -f WorkflowDefinitionGenerator_build.xml
2.3.5.1.1. 精査エラー発生時の動作¶
fileName = [WF0001_交通費申請_ver1_20140805.bpmn] フローノードIDの桁数がID体系で定められた桁数と異なります。IDを修正してください。 id = [T00001] name = [確認] (設定値:10 実際:6)
2.3.6. 仕様¶
2.3.6.1. 読込対象¶
本ツールはModeler上の下記要素に設定された値を読込、ワークフロー定義データとして出力する。
- プール
- レーン
- ユーザタスク
- XORゲートウェイ
- 開始イベント
- 停止イベント
- 中断メッセージ境界イベント
- シーケンスフロー
2.3.6.2. データ作成対象テーブル¶
ワークフロー定義データとして出力するテーブルの項目と、値の取得元について以下に示す。
2.3.6.2.1. ワークフロー定義¶
| 定義 | 内容 |
|---|---|
| ワークフローID | ワークフロー定義ファイル名から取得する。(フォーマット:[ワークフローID]_[ワークフロー名]_ver[バージョン]_[適用日].bpmn) 例)ワークフロー定義ファイル名が「WF0001_交通費申請_ver1_20140805.bpmn」の場合 ワークフローID:「WF0001」 バージョン:「1」 ワークフロー名:「交通費申請」 適用日:「20140805」 |
| バージョン | |
| ワークフロー名 | |
| 適用日 |
2.3.6.2.2. レーン¶
| 定義 | 内容 |
|---|---|
| ワークフローID | レーンが属しているワークフローID。 |
| バージョン | レーンが属しているワークフローのバージョン。 |
| レーンID | Modeler上でレーンの「Id」に指定したID。 |
| レーン名 | Modeler上でレーンの「Name」に指定した名称。 |
2.3.6.2.3. フローノード¶
| 定義 | 内容 |
|---|---|
| ワークフローID | フローノードが属しているワークフローID。 |
| バージョン | フローノードが属しているワークフローのバージョン。 |
| フローノードID | Modeler上でフローノードの「Id」に指定したID。 |
| レーンID | フローノードが属しているレーンID。 |
| フローノード名 | Modeler上でフローノードの「Name」に指定した名称。 |
2.3.6.2.4. シーケンスフロー¶
| 定義 | 内容 |
|---|---|
| ワークフローID | シーケンスフローが属しているワークフローID。 |
| バージョン | シーケンスフローが属しているワークフローのバージョン。 |
| シーケンスフローID | Modeler上でシーケンスフローの「Id」に指定したID。 |
| 接続元フローノードID | シーケンスフローの接続元フローノードID。 |
| 接続先フローノードID | シーケンスフローの接続先フローノードID。 |
| フロー進行条件 | Modeler上でシーケンスフローに指定した「Condition」に応じた値。 「Condition」にクラスの完全修飾名を指定した場合:「Condition」に指定した値 「Condition」に省略記法を指定した場合:省略記法に紐付くクラスの完全修飾名 (省略記法については省略記法についてを参照) |
| シーケンスフロー名 | Modeler上でシーケンスフローの「Name」に指定した名称。 |
2.3.6.2.5. 境界イベントトリガー¶
| 定義 | 内容 |
|---|---|
| ワークフローID | 境界イベントが属しているワークフローID。 |
| バージョン | 境界イベントが属しているワークフローのバージョン。 |
| 境界イベントトリガーID | Modeler上で境界イベントの「Messages」に指定した値。 |
| 境界イベントトリガー名 | Modeler上で境界イベントの「Messages」に指定した値。 |
2.3.6.2.6. 境界イベント¶
| 定義 | 内容 |
|---|---|
| ワークフローID | 境界イベントが属しているワークフローID。 |
| バージョン | 境界イベントが属しているワークフローのバージョン。 |
| フローノードID | Modeler上で境界イベントの「Id」に指定したID。 |
| 境界イベントトリガーID | Modeler上で境界イベントの「Message」に指定した値。 |
| 接続先タスクID | 境界イベントが接続しているフローノードID。 |
2.3.6.2.7. タスク¶
| 定義 | 内容 |
|---|---|
| ワークフローID | タスクが属しているワークフローID。 |
| バージョン | タスクが属しているワークフローのバージョン。 |
| フローノードID | Modeler上でアクティビティに指定したID。 |
| マルチインスタンス種別 | Modeler上でマルチインスタンス・アクティビティに指定した「Is Sequential」に応じた値。 「Is Sequential」のチェックをONにした場合:SEQUENTIAL(順次マルチインスタンス) 「Is Sequential」のチェックをOFFにした場合:PARALLEL(並行マルチインスタンス) アクティビティがマルチインスタンス・アクティビティではない場合、NONEが出力される。 |
| 完了条件 | Modeler上でマルチインスタンス・アクティビティに指定した「Completion condition」に応じた値。 「Completion condition」にクラスの完全修飾名を指定した場合:「Completion condition」に指定した値 「Completion condition」に省略記法を指定した場合:省略記法に紐付くクラスの完全修飾名 (省略記法については省略記法についてを参照) |
2.3.6.2.8. イベント¶
| 定義 | 内容 |
|---|---|
| ワークフローID | イベントノードが属しているワークフローID。 |
| バージョン | イベントノードが属しているワークフローのバージョン。 |
| フローノードID | Modeler上で開始イベント(または停止イベント)の「Id」に指定したID。 |
| イベント種別 | Modeler上で配置したイベントの種類に応じた値。 開始イベントの場合:START 停止イベントの場合:TERMINATE |
2.3.6.2.9. ゲートウェイ¶
| 定義 | 内容 |
|---|---|
| ワークフローID | ゲートウェイが属しているワークフローID。 |
| バージョン | ゲートウェイが属しているワークフローのバージョン。 |
| フローノードID | Modeler上でゲートウェイの「Id」に指定したID。 |
| ゲートウェイ種別 | Modeler上で配置したゲートウェイの種類に応じた値。 XORゲートウェイの場合:EXCLUSIVE |
2.3.6.3. 精査仕様¶
2.3.6.3.1. 構文精査¶
ワークフロー定義ファイルが、BPMN 2.0のxsd定義に準拠しているか精査を行う。(idの重複等)
ちなみに
ワークフロー定義ファイルがBPMN 2.0のxsd定義に違反している場合、そのファイルのワークフロー定義データを出力しない(正常に読み込みが行えたファイルのみ出力)
2.3.6.3.2. ワークフローライブラリの制約に関する精査¶
ワークフロー定義ファイルが、ワークフローライブラリが提供するワークフロー機能の制約に準拠し、正常動作する構文であるか精査を行う。(プール数、利用可能フローノード等)
ちなみに
精査エラーが発生した場合、そのファイルのワークフロー定義データを出力しない(正常に読み込みが行えたファイルについては出力する)
- クラス名(省略記法) + (パラメータ1, パラメータ2, ....)の形式であること。※パラメータが無い場合、括弧を書かないこと
- クラス名(省略記法)部分が、.(ピリオド)で開始、終了していないこと。
- クラス名(省略記法)部分に、連続する.(ピリオド)を含まないこと。
- クラス名(省略記法)部分に、空白文字(全角空白を含む)を含まないこと。
- 空白文字のみのパラメータが指定されていないこと。
2.3.7. プロジェクト固有の設定について¶
プロジェクトで以下の変更がある場合、コンポーネント定義ファイルを修正する必要がある。
| 変更内容 | 修正対象(コンポーネント定義ファイル内のコンポーネント名、及びマップ名) |
|---|---|
| ワークフロー定義ファイルの読込元、出力先 | workflowDefinitionReader、workflowDefinitionWriter |
| フロー進行条件、完了条件クラスの省略記法 | flowProceedCondition、completionCondition |
2.3.7.1. ワークフロー定義ファイル読込元、ワークフロー定義データ出力先の変更¶
コンポーネント定義ファイル設定例
<component name="workflowDefinitionReader" class="please.change.me.sample.ss11.CustomWorkflowDefinitionReader"/><!-- PJ固有のReaderクラス -->
<component name="workflowDefinitionWriter" class="nablarch.tool.workflow.WorkflowDefinitionExcelWriter">
<property name="workflowDefinitionSchema" ref="workflowDefinitionSchema"/>
<property name="outputFilePath" value="${outputFilePath}"/>
</component>
2.3.7.2. フロー進行条件、完了条件クラスの省略記法の変更¶
2.3.7.2.1. 省略記法について¶
コンポーネント定義ファイル設定例
<!-- フロー進行条件クラスの省略記法設定 -->
<map name="flowProceedCondition">
<entry key="eq" value="nablarch.tool.workflow.EqFlowProceedCondition"/>
<entry key="ge" value="nablarch.tool.workflow.GeFlowProceedCondition"/>
<entry key="gt" value="nablarch.tool.workflow.GtFlowProceedCondition"/>
<entry key="le" value="nablarch.tool.workflow.LeFlowProceedCondition"/>
<entry key="lt" value="nablarch.tool.workflow.LtFlowProceedCondition"/>
<entry key="ne" value="nablarch.tool.workflow.NeFlowProceedCondition"/>
</map>
<!-- 完了条件クラスの省略記法設定 -->
<map name="completionCondition">
<entry key="all" value="nablarch.tool.workflow.AllCompletionCondition"/>
<entry key="or" value="nablarch.tool.workflow.OrCompletionCondition"/>
</map>
Modeler上の入力、及び出力結果
| Modeler上の入力値 | 出力結果 |
|---|---|
| all | nablarch.tool.workflow.AllCompletionCondition |
| or(1) | nablarch.tool.workflow.OrCompletionCondition(1) |
2.3.7.2.2. 省略記法の追加・変更¶
コンポーネント定義ファイル設定例
<!-- 完了条件クラスの省略記法設定 -->
<map name="completionCondition">
<entry key="all" value="please.change.me.sample.ss11.component.CM111004Component"/><!-- PJ固有の完了条件クラス -->
<entry key="or" value="nablarch.tool.workflow.OrCompletionCondition"/>
</map>