2.3. ワークフロー定義データ生成ツール

2.3.1. 概要

本ツールは、BPMN2.0に準拠したワークフロー定義ファイル(xmlファイル)を読み込み、マスタデータとして投入可能な形式でExcelファイルを出力する。
※本ガイドでは、ツールのインプットとなるファイルをワークフロー定義ファイルと呼称する。ワークフロー定義ファイルの作成方法については「ワークフロー設計ガイド」を参照すること。

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
ツールを実行すると、全てのワークフロー定義ファイルを読み込み、精査を行う。(精査については精査仕様を参照)
ワークフロー定義ファイルが正常な場合、ワークフロー定義データを1つのExcelファイルに集約して出力する。
出力されるExcelファイルのファイル名は、環境設定ファイルに記載したもの。(デフォルトは、MASTER_DATA_WF.xlsx)

2.3.5.1.1. 精査エラー発生時の動作

精査エラーが発生した場合、そのワークフロー定義ファイルのデータはExcelファイルに出力されない。
(正常なワークフロー定義ファイルのデータのみ出力する。全てのワークフロー定義ファイルが不正な場合、Excelファイル自体を出力しない)
また、エラー情報出力ファイルにファイル名・エラーメッセージを出力する。出力例は下記の通り。
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. ワークフロー定義ファイル読込元、ワークフロー定義データ出力先の変更

ワークフロー定義ファイルの読み込み元、出力先を修正する場合、コンポーネント定義ファイルで定義しているworkflowDefinitionReader、workflowDefinitionWriterの「class」をプロジェクト固有のクラスに差し替える。
Readerクラスを変更する例を以下に示す。

コンポーネント定義ファイル設定例

<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. 省略記法について

コンポーネント定義ファイルで、任意の文字列とクラスの完全修飾名のマッピングを登録しておくことで、
Modeler上でフロー進行条件、完了条件クラスを指定する際、クラスの完全修飾名の代わりに登録した文字列を使用することが出来る。

コンポーネント定義ファイル設定例

<!-- フロー進行条件クラスの省略記法設定 -->
<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. 省略記法の追加・変更

コンポーネント定義ファイルで定義しているflowProceedCondition、completionConditionの「key」「value」を編集する。
完了条件クラスの省略記法を変更する例を以下に示す。

コンポーネント定義ファイル設定例

<!-- 完了条件クラスの省略記法設定 -->
<map name="completionCondition">
    <entry key="all" value="please.change.me.sample.ss11.component.CM111004Component"/><!-- PJ固有の完了条件クラス -->
    <entry key="or" value="nablarch.tool.workflow.OrCompletionCondition"/>
</map>