ワークフロープロセス

 ドキュメントプロセスワークフロー及びドキュメントバリューワークフローを実行すると「ワークフロープロセス(Workflow Process)」が生成されます。ワークフロープロセスはワークフローを全体を制御し、ステータス管理します。ここではワークフロープロセスについて調査及び研究し、その成果をまとめています。

ワークフロープロセスとワークフローアクティビティ

 ドキュメントプロセスワークフローとドキュメントバリューワークフローでは、ワークフローの実行時に”ワークフロープロセス(WFプロセス)”を生成し、一連のワークフローの処理状況を制御し、ステータス管理します。

WFプロセスとWFアクティビティの関係

 ”ワークフロープロセス(WFプロセス)”は1回のワークフローの実行時につき1つ生成されます。生成されたWFプロセスは、1つのWFノードにつき1つの”ワークフローアクティビティ(WFアクティビティ)”を生成します。WFアクティビティは対応するWFノードに設定されているアクションを実行し、その処理状況をステータス管理します。1つのWFアクティビティが正常終了するとWFプロセスは、条件の合う次のWFノードを探し出して、新たな”WFアクティビティ”を作成します。そして生成されたWFアクティビティは対応するWFノードに設定されているアクションを実行し、その処理状況をステータス管理します…。WFアクティビティが正常終了している間は、WFプロセスは条件のあう次のWFノードが無くなるまでWFアクティビティを生成し続けます。

 

ワークフローステータス(WFステータス)一覧

 WFプロセスはプロセス全体のステータスを管理し、WFアクティビティはWFノードに設定されているアクションの処理状況をステータス管理しています。それぞれ下記のリスト項目でステータスを管理しています。

◆実行前(ON:Not Started) …Open – Not Started

 WFプロセスにおいては、まだプロセスの実行前を表すステータスです。WFアクティビティにおいては、アクションの実行前を表すステータスです。

◆実行中(OR:Running) …Open - Running

 WFプロセス及びWFアクティビティが実行中のステータスです。

◆確認中/一時停止(OS:Suspended) ) …Open - Suspended

 承認処理において、承認者が承認処理をしていない状態を割らすステータスです。また、何らかの理由で処理が一時停止しているステータスになります。このステータスの場合は、承認する事によりWFプロセスを再開する事ができます。

◆正常終了(CC:Completed) …Closed – Completed – normal exit

 一連のワークフローが正常に終了した場合のステータスです。

◆否認/途中終了(CA:Aboted) …Closed – Aborted – Environment/Setup Error

 承認処理において否認されると、WFプロセス及びWFアクティビティは”否認/途中終了”ステータスになります。他にもワークフローの設定にエラーがあり処理が途中で終了になった場合に、このステータスになります。WFアクティビティがこのステータスになると、WFプロセスの処理全体が終了になります。

◆実行時エラー終了(CT:Terminated) …Closed – Terminated – Execution Error

 一連のワークフローの処理の中で、何らかのエラーが発生した場合のステータスです。 WFアクティビティがこのステータスになると、WFプロセスの処理全体が終了になります。

【補足説明】ワークフローステータスの分類

 “実行前”、”実行中”、”確認中/一時停止”のWFステータスはこれから実行されるか実行中か再開される事からOpenなステータスとされています。反対に”正常終了”、”否認/途中終了”、”実行時エラー終了”については、WFプロセスが再開される事はない事からCloseなステータスとされています。

ワークフローステータス(WFステータス)の確認

 ワークフローステータス(WFステータス)は、ワークフロー管理メニューからでも確認する事ができますが、ワークフローを実行しているウィンドウ(画面)からも左のツールバーのアイコンをクリックする事でワーフロープロセスウィンドウが表示され確認する事ができます。

ウィンドウのツールバー
ウィンドウのツールバー

ワークフロープロセスウィンドウ

 「ワークフロープロセス(Workflow Process)」ウィンドウでは、ワークフロープロセスの状況を確認する事ができます。

WFプロセス(Process)タブ

 WFプロセスタブでは、WFプロセス全体のステータス及び情報を確認する事ができます。

WFプロセスタブイメージ
WFプロセスタブイメージ

◆WFステータス(Workflow State)

 WFプロセスのWFステータスを表示します。

◆WF責任者(Workflow Responsible)

 WFプロセスの責任者が設定されます。ワークフローの設定にWF責任者が設定されている場合は、そのWF責任者がWFプロセスの責任者になります。ワークフローの設定にWF責任者が設定されていない場合は、”Invoker(実行者)”になります。

◆ユーザー(User)

 WF責任者が”Invoker”の場合、通常は伝票のオーナー(DocAction#getDoc_User_ID()の実装で取得できるユーザー)になります。WF責任者のWF責任人タイプが人の場合は、WF責任者に設定されているユーザーが、WFプロセスのユーザーに代入されます。

◆テーブル(Table)

 ワークフローを構築しているテーブルの情報が入力されます。

◆レコードID(Record ID)

 ワークフローの対象レコードにズームする事ができます。

◆WFプロセス管理(Processing) org.compiere.wf.WFProcessManage

 WFプロセスの処理が何らかの原因で途中で停止している場合など強制終了させたり、WFプロセスのWF責任者やユーザーを変更する事ができる、「 WFプロセス管理(Manage Process) 」プロセスを実行する事ができます。

◆処理済み(Processed)

 WFプロセスのWFステータスが、 ”正常終了”、”否認/途中終了”、”実行時エラー終了”のいずれかになった場合、"処理済み"フラグがONになります。

WFアクティビティ(Activity)タブ

 WFアクティビティタブでは、上位タブで選択したWFプロセスに結びつくWFアクティビティの情報を確認する事ができます。

WFアクティビティタブイメージ
WFアクティビティタブイメージ

◆WFノード(Node)

 1つのWFアクティビティは1つのノードに対応します。WFアクティビティに対応するノードが表示されます。

◆WFステータス(Workflow State)

 WFアクティビティのWFステータスを表示します。

◆WF責任者(Workflow Responsible)

  対応するWFノードに設定されている、WF責任者が設定されます。

◆ユーザー(User)

 WFアクティビティのWFステータスが"確認中/一時停止"の場合、ここに設定されたユーザーが承認(確認)処理を行うユーザーになります。

◆テーブル(Table)

 ワークフローを構築しているテーブルの情報が入力されます。

◆レコードID(Record ID)

 ワークフローの対象レコードにズームする事ができます。

◆WFアクティビティ管理(Processing) org.compiere.wf.WFActivityManage

  WFアクティビティの処理が何らかの原因で途中で停止している場合など強制終了させたり、WFアクティビティのWF責任者やユーザーを変更する事ができる、「 WFアクティビティ管理(Manage Activity) 」プロセスを実行する事ができます。WFアクティビティを強制終了させると、WFプロセス全体も終了します。

◆処理済み(Processed)

 WFアクティビティのWFステータスが、”正常終了”か”否認/途中終了”、”実行時エラー終了”のいずれかになった場合に、処理済みフラグがONになります。

WFイベントログ(Event)タブ

 ワークフロープロセスでは、その処理のログをWFイベントログに記録しています。情報としてはWFアクティビティの情報に似ていますが、ワークフローアクションの変数設定などを利用する場合は、変更前の値と変更後の値などを記録してますので後で確認する事ができます。また、承認処理において、承認権限を他の人に移譲(転送)した場合に、その履歴も保持されます。

WFイベントログタブイメージ
WFイベントログタブイメージ

◆イベントタイプ(Event Type)

  • プロセス生成(PC:Process Created)
  • プロセス終了(PX:Process Completed)
  • ステータス更新(SC:State Changed)

◆経過時間(ms)

 WFアクティビティのインスタンス生成時にWFイベントログのインスタンスも生成さます。そのWFイベントログのインスタンスの生成時間の”Created”から、WFアクティビティのWFステータスがクローズのステータスになるまでの経過時間が記録されます。