LoginSignup
0
0

More than 1 year has passed since last update.

[OutSystems]EntityのCreate時に複数のProcessを起動できる

Posted at

BPTは、LaunchProcess Actionを使う他に、EntityのCreateを起点に起動することもできる。
1つのEntityのCreateを起点に複数のProcessを起動することができれば、BPTをイベントブローカーとして使うこともできるので試してみる。

環境

Personal Environment(Version 11.15.0 (Build 34858))
Service Studio(Version 11.14.14)

実現イメージ

以下の通り。
①Pubモジュールで画面入力を元にEntityに1レコード追加する
②複数のProcessをこのCreateを起点に起動させる。各Processは起動したことの印としてEntityの属性を含めたログを記録する
image.png

実装例

Entityを定義

上の実現イメージの通りName属性(Text型)だけ持つEntityを作成する。
他のモジュールで参照するので、Public=Yesに設定する。
image.png
また、Processの起点として設定するには、Expose Process Eventsをオンにして置く必要がある(デフォルト。このダイアログは、「More...」をダブルクリックすると開く)。
image.png

Entityレコードを登録する処理を作成

これは、レコードを登録すればなんでもいいので、省略。
UI FlowにEntityをドラッグ&ドロップするとできる標準のフォームで十分。

Processを定義

実現イメージでは別モジュールに配置しているので、新しいモジュールを作成する。
まず、Ctrl+Q等でManage Dependenciesダイアログを開き、上で作成しておいたEntityへの参照を追加する。

Service StudioのProcessesタブのProcessesフォルダを右クリック → Add ProcessでProcessを作成する。
次に、作成したProcessを選択し、右下に表示されるプロパティからLaunch Onで参照したEntityのCreateイベントを選択する(この例では、EntityをEventBrokerと名付けたため、CreateEventBrokerを選択している)。
image.png

作成したProcessは動いたことだけ確認すれば良いので、実現イメージの通り、Automatic Activity1つだけを配置。
Automatic Activityの実装は実現イメージの通り、

  1. Launch Onを指定すると自動追加されるProcessのInput Parameter(EventBroker EntityのId型)を使って対象Entityを取得
  2. 取得したレコードの情報を(System)のLogMessageでログ出力する

とした。
実装が終わったら、モジュールをクローンして複数同じ設定のモジュールを用意する。

テスト

実行すると、以下のGeneral Logの通り、1レコード追加を起点にEventSubTest1とEventSubTest2が起動し、ログを記録している。
image.png

イベントブローカーとしてBPTを使う

Pub/Sub側共に同じ環境のOutSystemsアプリケーションであれば、この仕組を使って、イベントブローカーを実現することもできそう。

Choreography Sagaに使えないかと検討中。

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