0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ODC]WorkflowがGAになったので触ってみる

Posted at

2024年7月末にGAされたWorkflow機能を触ってみる。

環境情報

ODC Studio(Version 1.4.17)

リソース

オンラインのトレーニング:Building Workflows in ODC
ドキュメント:About business processes - ODC Documentation

機能の概要

要するに、OutSystems 11のBPTに相当する機能。
いわゆるワークフローのように、人手を介するものを含む一連のタスクを、Appから独立した要素として作成する。

つまり、ODCで作成できるモジュール相当の要素が、App, Library, Workflowの3つになったといえる。

BPTとは違い、IDE(ODC Studio)とは独立した、Webベースのエディタで作成。
Eventを起点に開始し、2024/07時点では以下の要素を使える

  • Automatic Activity: 小さなロジック(Service Action)を実行
  • Human Activity: 人にタスクを割り当てる(基本的にはScreenを紐づける)
  • Desicion: 条件分岐
  • Go to a previous step: (Desicionより後でないと使えない)その場所より前のステップに制御を戻す

AO

Workflowは起点がEventなのでそこで1AO。
Human ActivityのClose OnはEventで必須なので、基本的には1AO。また、通常はScreenを割り当てるので、そこでも1AO。

Workflowは最大で、「1 + Human Activity数 × 2」 AOを使う。
 (Eventは複数箇所で共有したり、ScreenはそもそもApp側の要件で必要となるものを流用することが多いので、実際には少なくなるはず)

Workflowのサンプル

以下のチュートリアル終了後のサンプル。
image.png

チュートリアル

簡単なWorkflowを作って操作方法を確認しておく。

シナリオ

「新規App/Libraryの払い出し依頼」(開発チームのOrganization roleにCreateの権限がついていない場合)

  1. 開発チームの代表者が、払い出し依頼画面から作成依頼
  2. 払い出し担当者にHuman Activityを割り当て。払い出し画面で内容を確認し、ODC PortalでApp/Libraryを作成。作業内容を画面に登録
  3. Decisionで、メールでの連絡を希望しているかどうかを判定
  4. (メール連絡希望有りの場合)Automatic Activityが起動し、申請者にメール送信

App側で事前作業

Eventを作成

ODC StudioでEventsタブ > Eventsの下に作成する。
以下の2つのEventを作成した

  • AppCreateRequestEvent: 払い出し依頼があったことを示す、Workflowの起点
  • AppCreatedEvent: 払い出し依頼を受けて、App/Libraryの作成が完了したことを担当者が登録したことを示す、HumanActivityが終了する
    image.png

Entityを作成

Workflowで作成・更新していくデータの入れ物として作成。
image.png
払い出し依頼時にRequestedAt/HandledAt以外の全項目を依頼者が入力 (このときRequestedAtは現在日時を自動設定)。
App/Library作成を担当者が登録するときに、HandledAtに自動で現在日時を設定。

Screenを作成

以下の3つの画面を作成

  1. 払い出し依頼画面
  2. 払い出し依頼メンテナンス画面(Human Activityに紐づけられる画面。Public=Yesにする必要がある)
  3. 自分に割り当てられたHuman Activity一覧画面

3について。(System)にある、HumanActivityInstance EntityのAssignedUserId属性をGetUserId()でフィルタすると、自分に割り当てられたHuman Activity一覧を得られる。

このとき、URLにはクエリストリングまで含めた遷移先画面へのパスが入っているので、この属性をLinkの遷移先に使えば良い。
image.png

Editorを起動する

ODC Portalにアクセスし、左上にあるWorkflowsメニューを選択。
image.png

右上の「Create workflow」ボタンで新しいWorkflowを作成する(以下は入力例。App等と入力する内容はほぼ同じ)。
image.png

Workflowを起動するEventを指定

Startを選択し、画面右のプロパティで、

  • 左のドロップダウンリストでEventを作成したAppを選択
  • App内でEvent(このEvent発生時にWorkflowが起動する)を選択
    image.png

ここでは、App/Library作成依頼が発生したことを示すAppCreateRequestEventを選択した。

Human Activityを配置

StartとEndをつなぐ線上の「+」アイコンをクリックすると、その位置に追加できる要素がリストアップされる。Human activityのオプションを選択すると追加できる。
image.png

Human Activityは、エンドユーザーの操作が必要であることを示す要素。普通はScreenに紐づけられる。
以下は設定例。
image.png

image.png

Close onは必須。 Conditionをつけないと、Eventを見ている全てのHuman Activityが終了する。

Desicionを配置

Desicionは、Action FlowのSwitchと役割は同じ。
image.png

Automatic Activityを配置

自動実行されるロジックを示す要素。Service Actionに紐づける。
image.png
このとき、Input Parameterは基本データ型のみで、Identifier型は不可である点に注意(そのため、ここではWorkflowが受け取ったId型をIdentifierToLongIntegerでLong Integer型にキャストしている)。

動作確認

依頼者が以下のように入力して、依頼ボタンをクリック(背後でEntityのレコードを作成し、そのIdを引数に、Trigger EventでAppCreateRequestEventを発生させる)。
image.png

このとき、Workflowが自動で発生し、Human Activityに到達する。
ODC Portal > Workflows > 該当のWorkflowを開き、Instancesタブを見ると、このWorkflowの現在実行中のInstanceを見られる。以下はその1つを開いたところ。視覚的にどこまでWorkflowが進んでいるのかを確認できる。
image.png

割当ユーザーでAppにログインし、事前準備で作っておいた自分に割り当てられたHuman Activity一覧画面へ。このリンクをクリックすると紐づけられた画面が開く。
image.png

リンクにはWorkflowから渡されたIdが含まれている。Idを使って検索し、Entityのレコードが表示される。要望に従ってApp/Libraryを作成したら「完了登録」ボタンをクリック。このとき背後で、Trigger Eventを動かし、AppCreatedEventを対象レコードのIdとメール送信を希望するか否かの属性をInput Parameterとして渡す。
確認は省略するが、前者によって、このインスタンスのHuman Activityを終了させ、続くDesicionは後者のパラメータによって分岐する。
image.png

Endまで到達し、終了したインスタンスの様子。通過した要素のみを順番に表示するようだ。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?