2024/11/12のProduct Releases and Updatesで、ODCのWorkflow(O11で言うと、BPTに相当する)への機能追加が発表された。
ODCのWorlflow一般については、以前書いた以下の記事を参照。
Product Releases and Updates
Workflows - New language elements and public roles | OutSystems
発表された新機能は、以下4つ。
- Wait(フローを一定Event発生まで停止するステップ)
- Conditional Start(Startとは別の起点をワークフローに持てる)
- Terminate(Conditional Startで始まるフローの最後に配置すると、インスタンス全体が停止する)
- Role-based Human Activities
動作確認シナリオ
新機能全てをカバーする以下の仮想業務シナリオを使って、動作確認していく。
(本当にこんな業務があるかは知らないが)
「契約書作成システム」
ある程度実績のある種別の契約書を、ユーザーの入力と申請に応じて作成し、必要なレビューを行い、必要に応じて、顧問弁護士にも確認を依頼する。
- ユーザーが契約内容を入力
- システムが、法務部門に契約書案のレビューを依頼(法務部門RoleにHuman Activityを割り当てる)
- 法務部門によるチェック後、契約金額等の条件によっては、顧問弁護士のチェックを依頼する。この場合は、チェック結果はシステムには自動入力されず、チェック結果を受け取ったというイベントを待ってワークフローを進める(顧問弁護士によるチェックはシステム外で行われるので、Waitを使ってその終了イベントが発生するまでワークフローを止める)
- レビュー結果に基づき、契約書を最終版に
最終盤になるまでの間、依頼者は以下の操作を行える
- コメント追加:レビュー担当者へコメント内容が通知される。ワークフローはそのまま継続 (Conditional Start + End)
- 取り下げ:契約書が不要になった、不備があるので一旦撤回する時の操作。レビュー中であってもワークフロー全体を終了させる (Conditional Start + Terminate)
作成したワークフロー
丸囲み数字を配置した部分が今回の新機能に対応するので、そこだけ見ていく。
①Human ActivityをRoleに対しても割り当てられるようになった
で見たように、Roleは公開可能になった。同時に、Human Activityの割り当て先を、PublicなRoleとできるようになった。
設定UI
これまで通り、個別ユーザーに割り当てる(User)か、Roleに割り当てる(Roles)かをスイッチで選べるようになった。Roleの場合は、Add rolesの「+」アイコンで割当先のRoleを指定する。
ODC Portalでインスタンスを確認する
RoleのIdを確認できるか → 2024/11時点では難しそう
現時点ではRoleのIdを確認するのが難しい。思いつくのは以下の手順くらい。
- Human ActivityのRole割り当てを定義してPublish
- そのWorkflowを開始し、Role割り当てするHuman Activityまで進める
- (System)/HumanActivityRoleのデータを見て、RoleId属性の値を取得する
②Waitでイベント発生までワークフローを止めて待てるようになった
指定方法はHuman ActivityのClose onと同じ。指定Eventが発生し、かつそのEventがConditionに指定した条件に合致するまではワークフローの進行を停止する。
ODC Portalでインスタンスの実行状況を確認したところ。
③Conditional Startで進行中のワークフローインスタンスに割り込みをかけられる
Startノードからつながる一連のステップとは独立したフローを開始できるのがConditional Start。
Waitと同じく、開始基点となるEventと、そのEventの中で満たすべき条件を示すConditionを設定する。
Conditioanl Startで始まるフローはEndとTerminateいずれでも終えられる。
Endの場合は、Startから始まる本来のフローはそのまま実行を継続できる。
Terminateにした場合、インスタンスそのものが終了する。
インスタンスをConditional Start → Terminateで終えた状態の例。
Startから始まる流れは、最後に有効だったWaitステップがTerminatedで終えられている。それに対し、Conditonal Startから始まる流れはCompletedになっている。なお、このとき、インスタンスそのもののステータスはDone。