Wagbyアプリケーションが利用するワークフロー管理テーブル最終更新日: 2020年6月12日
R8 | R9

ワークフローを利用するモデルに追加される項目

ワークフローを利用するモデルは、対象テーブルに次の4つの項目が付与されます。

項目名 説明 内容
jfcWorkflowCreateUser 文字列型 作成者 "yamada" (juserモデルのuserid値)
jfcWorkflowAdmitUser 文字列型(テキストエリア) 承認対象者。別の言い方をすると、このフローを保留しているもの。 "saitou" (ユーザの場合)
"groupid:1000" (グループの場合)
jfcWorkflowProcessedLayerId 文字列型 処理済みノードの値 (*1) "2"
jfcWorkflowCurrentNode 文字列型 処理待ちノードの値 (*2) "3"

フロー状態、承認対象者の取得時に、上記項目の値が使われます。

1. ワークフローのフローパターンが「承認,承認」のとき、内部の値は "0", "1" となります。この値で、どこまでワークフローが進行したかを管理しています。なお却下、取り消しといったイベント発生ではこの値は null になります。
2. 次の処理を行うノードを指します。却下、取り消しといったイベント発生ではこの値は null になります。
3. フロー参加者をスクリプトで設定した場合、スクリプトで取得された "次の承認対象者" は、ワークフロー適用モデルの "承認対象者(jfcWorkflowAdmitUser)" 項目に保存されます。このため、申請・承認時にスクリプトで次の承認対象者が確定された後にスクリプトを変更しても、次の承認対象者は変更されません。ワークフロー適用モデルのテーブルに用意された項目 "承認対象者(jfcWorkflowAdmitUser)" 項目の値を空にすると、当該データの詳細表示画面表示時にスクリプトが再度、実行されるようになりますが、アプリケーションの操作で、この項目の値を空にする方法は用意していません。

システム系モデル

設定に関するモデル

ワークフローを動作させるための各種設定情報を格納しているモデルは次のとおりです。

モデル名 モデルID 説明 参考ページ
フローパターン jfcflow_setting ワークフローの流れの種類を格納する。 フローパターンの設定を行う
フロー参加者設定 jfcparticipant_setting フローパターンと申請者/承認者/決裁者などを関連付ける。 フローの参加者を設定する
ワークフロー設定 jfcworkflow_setting フロー参加者設定とモデルを関連付ける。 モデルにワークフロー定義を設定する
代理者設定 jfcproxy_setting 代理承認機能のための設定情報を格納する。 代理承認

運用に関するモデル

ワークフローの運用で利用しているモデルは次のとおりです。

モデル名 モデルID テーブル 説明 参考ページ
フローイベント jfcworkstate あり 承認、決裁といったフローイベントを格納する。 ワークフローを手動で取り消す
開始フロー状態 jfcstartworkstate なし 未承認のワークフローを管理する。 申請したワークフローの状態を確認する
保留フロー状態 jfcsuspendworkstate なし 未承認のワークフローを管理する。 承認すべきワークフローを確認する
(含・一括承認)

上記モデルに加え、(前述した)モデル内に用意された4つの管理項目を組み合わせてワークフローを運用しています。

動作の流れ

アドオンギャラリーで提供しているワークフローサンプル「年休申請」モデル (JSHLEAVE) を使った、ワークフロー処理によるテーブルのデータ推移を説明します。

1. 申請

アカウント user1 が申請した例です。次の承認者を user2 とします。 このとき、JSHLEAVE モデルに用意されるワークフロー管理項目は次のようになります。

項目 内容
jfcWorkflowCreateUser user1
jfcWorkflowAdmitUser user2
jfcWorkflowProcessedLayerId 1
jfcWorkflowCurrentNode 2

また、ワークフローのイベントを管理する jfcworkstate は次のようになります。申請処理によって2レコードが追加されます。

ID フローID モデル名 モデル主キー 参加者 処理者 フロー参加者ID 処理済階層ID 処理待ち階層ID 処理内容 コメント 処理日 更新日
IDflowidmodelnamemodelpkeyparticipantusernameparticipantidprocessed_layeridwait_layerideventcomment2insert_dateupdate_date
1000 1000 JSHLEAVE 1000 NULL user1 NULL 0 1 Start NULL 2020-12-02 08:24:07 2020-12-02 08:24:08
1001 1000 JSHLEAVE 1000 NULL user1 1 1 2 Application よろしくお願いします。 2020-12-02 08:24:20 2020-12-02 08:24:20
  • 最初のレコードは処理内容が Start となっています。これはデータが登録されたが、ワークフローはまだ申請されていないことを示します。
  • 次のレコードは処理内容が Application となっています。これはワークフローが申請されたことを示します。
  • 対象モデル(ここでは JSHLEAVE)に用意されている「作成者」(jfcWorkflowCreateUser) の値は、最初にセットされた値(ここでは "user1")が維持されます。
  • 対象モデルに用意されている「承認対象者(このフローを保留しているもの)」(jfcWorkflowAdmitUser) の値は、jfcworkstate テーブルのレコードに含まれていません。ワークフロー処理を行ったときに内部で計算された値が格納されます。
  • 対象モデルに用意されている「処理済みノード」(jfcWorkflowProcessedLayerId) の値は、jfcworkstate テーブルの「処理済み階層ID」(processed_layerid)項目に相当します。このワークフロー(ここでは「フローID」が "1000" のワークフロー)のもっとも新しいレコードの値と同じです。
  • 対象モデルに用意されている「処理待ちノード」(jfcWorkflowCurrentNode) の値は、jfcworkstate テーブルの「処理待ち階層ID」(wait_layerid)項目に相当します。このワークフロー(ここでは「フローID」が "1000" のワークフロー)のもっとも新しいレコードの値と同じです。

2. 承認と決裁

アカウント user2 が承認した例です。今回は2ノード(順次-順次) とし、この承認がそのまま決裁になります。 このとき、JSHLEAVE モデルに用意されるワークフロー管理項目は次のようになります。

項目 内容
jfcWorkflowCreateUser user1
jfcWorkflowAdmitUser NULL
jfcWorkflowProcessedLayerId 2
jfcWorkflowCurrentNode NULL

また、ワークフローのイベントを管理する jfcworkstate は次のようになります。承認および決裁処理によって2レコードが追加されます。

ID フローID モデル名 モデル主キー 参加者 処理者 フロー参加者ID 処理済階層ID 処理待ち階層ID 処理内容 コメント 処理日 更新日
IDflowidmodelnamemodelpkeyparticipantusernameparticipantidprocessed_layeridwait_layerideventcomment2insert_dateupdate_date
1002 1000 JSHLEAVE 1000 NULL user2 2 2 NULL Admit 了解しました。 2020-12-02 08:30:10 2020-12-02 08:30:10
1003 1000 JSHLEAVE 1000 NULL user2 NULL 2 NULL End 了解しました。 2020-12-02 08:30:10 2020-12-02 08:30:10
  • 3行目のレコードは処理内容が Admit となっています。これはワークフローの承認処理が行われたことを示します。
  • 4行目のレコードは処理内容が End となっています。これはワークフローが決裁されたことを示します。
  • 対象モデル(ここでは JSHLEAVE)に用意されている「作成者」(jfcWorkflowCreateUser) の値は、最初にセットされた値(ここでは "user1")が維持されます。
  • 対象モデルに用意されている「承認対象者(このフローを保留しているもの)」(jfcWorkflowAdmitUser) の値は NULL となっています。これはワークフローが終了したため、次の承認者はいないことを示します。
  • 対象モデルに用意されている「処理済みノード」(jfcWorkflowProcessedLayerId) の値は、ワークフローが終了したときのノードになっています。ここでは決裁されたため、最後のノードID "2" となっています。
  • 対象モデルに用意されている「処理待ちノード」(jfcWorkflowCurrentNode) の値も NULL となっています。ワークフローが終了したため、次のノードがないことを示します。

補足

ワークフローで使う用語

マニュアルでは「ルート」「ノード」「フローパターン」「フロー参加者」「フローイベント」といった用語を使って説明しています。[詳細...]

「処理内容」について

jfcworkstate テーブルの「処理内容(event)」項目は次のいずれかの値を持ちます。"Start", "Application", "Admit", "Reject", "Suspend", "Back", "Cancel", "End", "Rewind"

詳細はワークフローのイベントに関する説明をお読みください。

「階層」について

  • 内部ではワークフローの各ノードに番号を降っています。番号は1から開始され、ノードが進むごとに1ずつ増えます。システム内部では layerid と表現しています。