2014年

3月

05日

【iDempiere標準業務機能】未処理WFアクティビティ(Workflow Activities)

 「ドキュメントプロセスワークフロー(Document Process Workflow)」と「ドキュメントバリューワークフロー(Document Value Workflow)」では、ワークフローの途中で承認(確認)処理を行う事ができます。承認(確認)処理は「未処理WFアクティビティ(Workflow Activities)」画面で行います。

未処理WFアクティビティ画面への行き方

Web-UI

Web-UIのActivitiesガジェット
Web-UIのActivitiesガジェット

 Web-UIでは未処理WFアクティビティの処理画面へはTOP画面のタブにあるActivitiesガジェットの未処理WFアクティビティボタンを押す事により行く事ができます。ボタンの左側の数値は未処理件数を表しています。

Swing-UI

 Swing-UIでは、未処理WFアクティビティ画面はトップ画面のタブ構成の1つになっています。

Swing-UIの未処理WFアクティビティタブ
Swing-UIの未処理WFアクティビティタブ

未処理WFアクティビティ画面

 未処理WFアクティビティ画面では操作者(ログインユーザー)に対して承認処理が求めれられているWFアクティビティが一覧表示され、承認(確認)、否認、承認(確認)処理の委譲(転送)などが行えます。

未処理WFアクティビティ画面
未処理WFアクティビティ画面

回答(Answer)

 「ドキュメントプロセスワークフロー」の場合、申請されている伝票を承認するかどうかを”はい”もしくは”いいえ”を選択して回答します。 “はい”もしくは”いいえ”を選択したらOKボタンを押して下さい。承認処理が完了します。  

 「ドキュメントバリュープロセス」の場合、対象となるデータへのズームボタンになっています。

【技術情報】回答欄の表示について

 上記説明は、わかりやすさを重視して書いていますが、システム的にはドキュメントプロセスワークフローかドキュメントバリューワークフローかで回答欄の表示を制御しているわけではありません。

 未処理承認画面はフォームにより作成されており、WFノードの設定により表示を制御しています。Web-UIではWWFActivityというADFormを継承したクラスで未処理WFアクティビティ画面が作られており、そのWWFActivity#display()メソッドで次のロジックで回答欄の表示を制御しています。

  • 未処理WFアクティビティの対応するWFノードのアクションが「選択(C:User Choice)」の場合で、カラム(Column)に設定されている値がある。
    • カラムに設定されている値のリファレンス(Display Type)が"YesNO"の場合は、回答欄に"はい/いいえ"のリスト表示をする。※通常WFノードのアクションに"選択"を設定した場合はカラムには"IsApproved"が設定されており、このケースに該当します。
    • カラムに設定されている値のリファレンス(Display Type)が"List"の場合は、そのリストを取得し表示する。
  • 未処理WFアクティビティの対応するWFノードのアクションが「ウィンドウ(W:User Window)」か「フォーム(X:User Form)」の場合は、その画面にズームする事ができるボタンを表示する。

転送(Forward)

 承認(確認)処理を選択したユーザーに委譲します。

OKボタン

 OKボタンを押すと、転送先の指定がある場合には転送処理されます。転送先の指定がない場合で回答欄の表示がある場合には、回答欄で選択した内容に応じて承認処理もしくは否認処理が行われ、回答欄の表示がない場合には確認処理が基本的に行われます。

承認処理と否認処理と確認処理

 承認処理は、まず「未処理WFアクティビティ(Workflow Activities)」画面で、未処理WFアクティビティの中から承認するWFアクティビティを選択します。承認処理ができるWFアクティビティの場合、通常回答欄に「はい/いいえ」がリスト表示されます。回答を"はい"にしてOKボタンを押すと、"承認(Approved)"した事になります。"いいえ"にしてOKボタンを押すと"否認(Not approved)"した事になります。

 未処理WFアクティビティの中には、対応するWFノードがいわゆる承認ノードではなく回答欄に「はい/いいえ」が表示されないものもあります。その場合は承認ではなく、"確認(Confirmation)"を促していますので、OKボタンを押して確認した旨の意思表示を行います。

承認処理

 「伝票(Document)」を"承認"する場合、未処理WFアクティビティに設定されているWF責任者が"Invoker(実行者)"かどうかで処理が大きく異なります。

 WF責任者がInvokerではない場合は、無条件で承認処理されます。「伝票ステータス更新(Document Action)」の「承認する(AP:Approve)」が実行され、「伝票ステータス(Document Status)」が「承認済み(AP:Approved)」になります。

 WF責任者がInvokerの場合は、操作者(ログインユーザー)に承認権限があるかどうか、職責の自己作成伝票フラグや金額設定により判断し、承認権限があればそのまま承認処理されますが、承認権限がなければ、承認権限のある操作者(ログインユーザー)の責任者を特定し、承認処理を委譲します。承認権限のある責任者が見つからない場合は、WFアクティビティのWFステータスは「実行時エラー終了」となりWFプロセスが終了します。

否認処理

 「伝票(Document)」を"否認"する場合は、承認WFアクティビティのWFステータスが"否認/途中終了(CA:Aborted)"になり、「伝票ステータス更新(Document Action)」の「否認する(RJ:Rejected)」の処理を行い、「伝票ステータス(Document Status)」が「否認(NA:Not Approved)」になります。

【補足説明】伝票以外の承認/否認後の処理

 仕様上は伝票以外(DocActionクラスを実装していない)のデータに対して、未処理WFアクティビティ画面で承認及び否認をさせる事も可能です。しかし、そのような場合は、承認/否認に関わらず、未処理WFアクティビティのWFステータスは"正常終了(CC:Completed)"になり、次のノードに処理が移行します。

確認処理

 未処理WFアクティビティ画面で、転送先が設定されておらず、未処理WFアクティビティに対応するWFノードが「選択(C:User Choice)」でない場合、OKボタンを押すと確認処理になります。

 確認処理ではOKボタンを押したユーザーをWFアクティビティのユーザーフィールドに代入し、WFステータスを”正常終了”にします。そして条件に合致する次のノードがあれば、そのノードに移行します。

未処理WFアクティビティ画面に一覧表示されるWFアクティビティ

 WFアクティビティの処理済み(Processed)フラグがOFF<Processed='N'>でWFステータスが"確認中/一時停止"<WFState='OS'>のWFアクティビティのうち、次のいづれかの条件にあうWFアクティビティが表示されます。

  • WFアクティビティのユーザーIDが操作者(ログインユーザー)になっているWFアクティビティ。
  • WFアクティビティのWF責任者のタイプが"人"で、Invoker(WF責任者のAD_User_IDが0でかつ、WF責任者のAD_Role_IDが0のWF責任者)であり、WFアクティビティのユーザーIDがNULLのWFアクティビティ。
  • WFアクティビティのWF責任者のタイプが"人"で、WD責任者のAD_User_IDが操作者(ログインユーザー)になっているWFアクティビティ。
  • WFアクティビティのWF責任者のタイプが"職責"で、その職責が操作者(ログインユーザー)に割当てられているWFアクティビティ。

 上記に条件に、職責の組織アクセス制限が加わってWFアクティビティが表示されます。