Dynamic Process Tutorial


目的

この演習では、動的プロセス(Dynamic Process)の基本的な動作を理解することを目的としています。

ユースケース

救急病院の患者受け入れをモデルとして、搬送から退院までの流れをモデルにした、簡単な動的プロセス・アプリケーションを作成します。

ハンズオン動作確認環境

このハンズオンは、Oracle Integration Cloud (User Managed)18.2.5で動作確認しています。

Mozilla FirefoxもしくはGoogle Chromeを使うことを推奨します。

ハンズオン実施上の注意

このハンズオンは、すでにStatic Process(通常のProcess)での開発経験がある人を対象にしています。

完成版をエクスポートしたものはこちらにあります。


演習手順

アプリケーションの作成

Integration Cloudのホーム左側のProcess Builderをクリックし、Process Builderでアプリケーションを作成していきます。

右上の 作成 をクリックし、メニューから 新規アプリケーション を選択します。

アプリケーション名はEmergency Processとし、作成 をクリックします。スペースはスペースの新規作成を選択し、スペース名としてDynamic Processを指定します。

右側の 作成 をクリックし、新規動的プロセス を選択します。

名前は Emergency Process、パターンは None を選択し、 Create をクリックします。

以下のような初期画面が現れるはずです。この画面でステージ(フェーズ)、マイルストン、アクティビティなどを追加していきます。


アクティビティやオブジェクトの作成

続いて、アクティビティを作成します。動的プロセスでは、ヒューマン・タスクもしくはBPMNプロセスをアクティビティにすることができます。ヒューマンタスクはプロセスが無くても単独でアクティビティにすることができます。BPMNプロセス・アクティビティには任意のBPMNアクティビティを含めることができます。

ヒューマンタスクの作成

アクティビティ追加フィールドで以下の操作をしてヒューマンタスク(HumanTask)を作成します。

作成した結果、以下のようにアクティビティが表示されているはずです。このうち、はこのアクティビティが必須であること、は必須項目が設定済みではあるものの、1個未設定の構成があることを表しています。

同様に、下表に従ってヒューマンタスクを作成します。

名前
スクリーニング
退院の手続き
手術の手続き
退院判定

ステージの作成

続いて、ステージ(Stage)を作成します。ステージはフェーズと置き換えて考えていただくとわかりやすいかもしれません。ステージを使って、フェーズ内のアクティビティを編成します。ステージは直列(ステージが一つずつ進む)、並列(複数のステージが同時並行に進む)のいずれかを選択できます。

※デフォルトでは、全てのステージが並列利用できます。

ステージ追加フィールドで名前を指定し、をクリックしてステージを作成します。

作成するステージの名前は下表に従います。

名前
スクリーニング
処置
退院

作成が完了すると、以下のような構成になっているはずです。

各ステージに作成済みのアクティビティを下表に従い配置します。残ったアクティビティは、任意のステージで実施可能なアクティビティとして機能します。

ステージ アクティビティ
スクリーニング スクリーニング
処置 処置、 退院判定
退院 退院の手続き

この結果、下図のような表示になっているはずです。

ヒューマンタスクについて

マイルストンの作成

スクリーニングステージのアクティビティ追加フィールドで以下の操作をしてマイルストンを作成します。

同様の操作で、下表に従い、各ステージにマイルストンを作成します。

ステージ マイルストン
処置 処置済
退院 退院済

作成が完了すると、下図のようになっているはずです。

フォームの作成

ヒューマンタスクで利用するフォームを作成します。

画面左側のメニューで フォーム を選択し、画面右側に現れる 作成 をクリックし、名前をPatientForm(半角、空白を入れない)として 作成 をクリックします。

初期状態では、プレゼンテーション名が メイン になっているはずです。この名前を スタート に変更します。プロパティ>プレゼンテーション>名前メインスタート に書き換えます。この スタート プレゼンテーションでは、入院患者の氏名を記録するために使います。

2個のテキストフィールドを貼り付けます。名前、ラベルは以下の通り設定します。バインドは名前を基に生成しますので、明示的に設定する必要はありません。

名前 ラベル (バインド) コンポーネント
LastName lastName テキスト
FirstName firstName テキスト

スタートをベースにして、新たにプレゼンテーションを作成します。プロパティ>フォーム>プレゼンテーションの+をクリックし、名前は スクリーニング 、基準は スタート を選択し、 作成 をクリックします。

スクリーニングでは、テキスト領域を追加し、下表に従ってプロパティを設定します。

名前 ラベル (バインド) コンポーネント
Symptoms 状態 Symptoms テキスト領域

作成したプレゼンテーションは以下のようになっているはずです。姓、名は読み取り専用にしておきます。

処置プレゼンテーションを作成します。スクリーニングと同じように、既存のプレゼンテーションを基に作成しますが、今回の場合は スクリーニング を基に作成します。作成したプレゼンテーションの 状態 の下に、繰返し可能セクションを追加します。

繰返しセクションではユーザーが行を追加/削除できるようにしておきます。

繰返しセクション内に日時とテキスト領域を追加し、下表に従ってプロパティを設定します。

名前ラベル(バインド)計算された値形式読取り専用コンポーネント
TreatmentDatetime処置日時treatmentDatetime

True

編集 をクリックし、タイプは ファンクション 、ファンクションは 現在の日時 を選択

yyyy-MM-ddTrue日時
Treatment 処置 Treatment N/A N/A False テキスト領域

作成したプレゼンテーションは以下のようになっているはずです。

手術の手続き プレゼンテーションを作成します。このプレゼンテーションは スタート を基に作成します。作成したプレゼンテーションに、チェック・ボックスを追加し、下表に従ってプロパティを設定します。姓名は読み取り専用にしておきます。

名前 ラベル (バインド) コンポーネント
IsConcented 手術への同意 isConcented チェック・ボックス

作成したプレゼンテーションは以下のようになっているはずです。

退院判定 プレゼンテーションを作成します。このプレゼンテーションは スタート を基に作成します。作成したプレゼンテーションに、チェック・ボックスを追加し、下表に従ってプロパティを設定します。姓名は読み取り専用にしておきます。

名前 ラベル (バインド) コンポーネント
IsTreatmentCompleted 退院可 isTreatmentCompleted チェック・ボックス

作成したプレゼンテーションは以下のようになっているはずです。

退院の手続きプレゼンテーションを作成します。このプレゼンテーションも 手術前の手続き と同様、スタートを基に作成します。作成したプレゼンテーションに、チェック・ボックスを追加し、下表に従ってプロパティを設定します。姓名は読み取り専用にしておきます。

名前 ラベル (バインド) コンポーネント
IsReadyForDischage 退院の準備完了 isReadyForDischage チェック・ボックス

作成したプレゼンテーションは以下のようになっているはずです。


プロセス開始イベントの設定

各動的プロセスは、フォームまたはデータ入力によって開始されます。動的プロセスのためのフォーム入力とプレゼンテーション入力を設定します。

動的プロセスを構成するため、EmergencyProcessタブをクリックします。

プロセス名の左側にあるをクリックすると、動的プロセスの開始条件を設定できます。下表に従って条件を設定し、 Define をクリックします。

起動条件 From Title Form Presentation Interface Argument
With Form Only 搬送者情報の登録 PatientForm スタート formArg

ヒューマンタスクとフォームの関連付け

ヒューマンタスクに先ほど作成したフォームのプレゼンテーションを関連付けます。

EmergencyProcessタブで、ヒューマンタスクの スクリーニング をダブルクリックする、もしくはシングルクリックで現れるをクリックします。いずれの方法でも、アクティビティのプロパティ設定画面が現れます。

プロパティ画面のGeneralタブ下方にあるImplementationのGeneralをクリックします。実装に関連するプロパティ設定画面が現れます。

FormはPatientForm、Presentationはスクリーニングをそれぞれ選択します。

TitleやTask Summaryを任意で設定します。ここで指定した内容は、実行時にフォームの最上部に表示されます。

Close をクリックします。

その他のヒューマンタスクについても同様に設定していきます。設定内容は下表をご覧ください。

アクティビティ Form Presentation
処置 PatientForm 処置
退院判定 PatientForm 退院判定
手術の手続き PatientForm 手術の手続き
退院の手続き PatientForm 退院の手続き

ヒューマンタスクへのデータアソシエーション

各ヒューマンタスクでは、データアソシエーション(データ・マッピング)を使って、データ入出力を定義する必要があります。データアソシエーションは、フロー要素間で渡される情報を定義します。

スクリーニングヒューマンタスクをクリックし、をクリックし、Data Association > Inputを選択します。

自動マッピングをクリックします。これをクリックすると、データ型が同じものを自動的にマッピングします。もちろん、手作業でマッピングしてもかまいません。

左上にある 出力 タブをクリックし、自動マッピングをクリックします。その後、 適用 をクリックします。もしoutcomeのデータ・アソシエーションが出る場合は、下図のように 削除 をクリックしてください。

その他のヒューマンタスク(処置、退院判定、手術の手続き、退院の手続き)も同様の設定をします。


ロールと権限の設定

動的プロセスの柔軟性は、動的プロセスのロールがもたらします。ロールを作成し、そのロールを適用するプロセス要素、そして付与する権限を定義します。

右上にある Roles をクリックします。

ロール タブでは、動的プロセス用に定義されたロールを列挙しています。事前構成済みのデフォルトのロールとして、Process OwnerとProcess Viewerの2つが提供されています。今回はこれらのロールを、動的プロセスに適用します。

鉛筆アイコンをクリックし、編集していきます。編集項目および編集内容は下表をご覧ください。権限を新たに作成する場合は、 アイコンをクリックします。編集が完了したら Save をクリックします。

Process Owner Process Viewer
新規ロール名 医師 看護師
Members OIC/AICにログインするユーザー OIC/AICにログインするユーザー(Doctorと異なるユーザーが望ましい)
既存のPermission 名前を プロセスの全アクションの実行 に変更 名前を プロセス全体の閲覧 に変更
新規追加するPermission N/A 以下の2個を追加
Name: スクリーニング・ステージでの編集
Items: スクリーニング・ステージ(アクティビティではないので注意)
Actions: Update

Name: 退院の手続き
Items: 退院の手続き
Actions: Update

ロールと権限について


ヒューマンタスクへのユーザー割当て

各ヒューマンタスクにはユーザーやグループ、ロールを割り当てる必要があります。

医師ロールを 処置 アクティビティに割り当てます。

  1. 処置アクティビティをダブルクリックもしくはシングルクリックでをクリック
  2. プロパティ画面のGeneralタブ下方にあるImplementationのGeneralをクリック
  3. Assigneesの鉛筆アイコンをクリック
  4. 現れたウィンドウの右上方にある+をクリックして、Identity Type、Type、Valueを指定する。今回の場合は、Identity TypeはRole、TypeはLiteral、Valueは医師を設定する。
  5. 設定が完了したら、Save をクリック

その他のアクティビティに対しても、下表の設定に従って、同様の手順でユーザーを割り当てていきます。

アクティビティ名 Identity Type Type Value
スクリーニング Role Literal 看護師
手術の手続き Role Literal 医師
退院判定 Role Literal 医師
退院の手続き Role Literal 看護師

ステージやアクティビティの開始および終了条件設定

ここまでで動作可能な動的プロセスを作成できていますが、実際の運用を想定し、条件に応じたステージやアクティビティの有効化・無効化を実現するための設定をしていきます。

救急搬送から退院までの流れは以下の通りです。

  1. 搬送
  2. スクリーニング
  3. 処置
    • 複数回発生する可能性があります
    • 手術が必要な場合があります
  4. 退院

上記の流れを意識して、各アクティビティの開始・終了条件を設定します。

スクリーニング・ステージ

スクリーニング ステージは1回のみ実行しますので、現状の設定のままでかまいません。

処置ステージ

  1. 処置 ステージのプロパティを開きます。
  2. Conditionsタブに移動し、開始条件(Activation)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 スクリーニング ステージの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。
  3. 同様に、終了条件(Termination)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 退院判定 アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

退院ステージ

  1. 退院 ステージのプロパティを開きます。
  2. Conditionsタブに移動し、開始条件(Activation)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 処置 ステージの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。
  3. 同様に、終了条件(Termination)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 退院の手続き アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

スクリーニング済マイルストン

スクリーニング・アクティビティが完了すると、自動的に到達しますが、明示的に設定するには以下のようにします。

  1. スクリーニング済 マイルストンのプロパティを開きます。
  2. Conditionsタブに移動し、完了条件(Completion)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 スクリーニング アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

処置済マイルストン

退院判定アクティビティが完了すると、自動的に到達しますが、明示的に設定するには以下のようにします。

  1. 処置済 マイルストンのプロパティを開きます。
  2. Conditionsタブに移動し、完了条件(Completion)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 退院判定 アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

退院済マイルストン

退院の手続きアクティビティが完了すると、自動的に到達しますが、明示的に設定するには以下のようにします。

  1. 退院済マイルストンのプロパティを開きます。
  2. Conditionsタブに移動し、完了条件(Completion)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 退院の手続き アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

手術の手続きアクティビティ

手術の手続きアクティビティは、処置ステージでのみ利用できるようにします。

  1. 手術の手続き アクティビティのプロパティを開きます。
  2. Conditionsタブに移動し、開始条件(Activation)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、スクリーニング アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。
  3. 同様に、終了条件(Termination)の右にあるをクリックして条件を追加します。Eventsの右にあるをクリックし、 処置 ステージの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

処置アクティビティ

処置アクティビティは、処置ステージで任意の回数利用できるようにします。

  1. 処置アクティビティのプロパティを開きます。
  2. Generalタブに移動し、MarkersのRepeatable(反復可能)にチェックを入れます。
  3. Repeatable(反復可能)の右側にある鉛筆アイコンをクリックし、Data Driven(データ・ドリブン)の右にある をクリックし、継続条件を追加します。今回は、フォームの退院判定プレゼンテーションの[退院可]チェックボックスの値で判定させるために、 formArg.isTreatmentCompletedfalse であることを継続条件とします。設定完了後、Save(保存)をクリックします。

  4. Conditionタブに移動し、終了条件(Termination)の右にある をクリックして条件を追加します。Eventsの右にある をクリックし、 退院判定 アクティビティの完了(Complete)を条件として設定します。設定後、下部のCreateをクリックしてください。Labelは適宜変更してかまいません。

この結果、下図のようなプロセス構造になっているはずです。


テストモードでの動作確認

テスト機能を使うと、アプリケーションをテストモードでアクティブ化し、利用できるようになります。準備が整うまで、アプリケーションを本番モードでアクティブ化しないことをお奨めします。

すでに基本的な動的プロセスは構成済みなので、このタイミングで作成した動的プロセスがどのように機能するかを確認してみましょう。

テストモードでのアクティブ化

テスト をクリックします。

現在のアプリケーション検証に成功しました が出ていることを確認し、 アクティブ化 をクリックします。

自分を全てのロールに追加 にチェックが入っていることを確認し、 アクティブ化 をクリックします。

テストモードでの実行

アクティブ化が完了したら、をクリックします。Testing ModeがOnの状態のブラウザが開きます。

Emergency Processをクリックします。 スタート フォームが現れるので、姓名を入力し、Submit(送信)をクリックします。

Submit(送信)が完了すると、Emergency Processインスタンスが作成されたことを示す表示が現れます。

左のメニューから、Dynamic Processes(動的プロセス)をクリックします。プロセスインスタンスがリスト表示されているので、クリックします。

インスタンス作成時に入力した姓名が表示され、上部にはインジケータが出ています。そしてアクティビティはスクリーニングのみ選択できることを確認した上で、スクリーニング・アクティビティの右にあるドロップダウンメニューから、Open(開く)をクリックします。

スクリーニング・プレゼンテーションが表示されていることを確認し、状態を入力し、Submit(発行)をクリックします。

インジケータが進展して、スクリーニング済のマイルストンに到達し、選択できるアクティビティは手術の手続き、処置、退院判定の3種類に変わっていることを確認してください。今回は手術の手続き、処置、退院判定のアクティビティを順に操作していきます。

操作すると以下のような挙動を示すことを確認してください。


本番モードでの動作確認

テストモードでの動作確認が終了したら、アクティブ化した上で、本番モードで実行します。アクティブ化対象のアプリケーションは、データベースに永続化(公開)したものです。そのため、まだ公開していない場合は事前に公開する必要があります。

アプリケーションの公開

上部メニューの公開をクリックします。

下図のようなウィンドウが開きますので、コメントを入れて 公開 をクリックします。このタイミングで、スナップショットを取得することもできます。公開が完了すると、本番モードでアクティブ化できる準備が整います。

本番モードへのアクティブ化

上部メニューの アクティブ化 をクリックします。

下図のようなアクティブ化の画面が現れます。下図の例はまだアプリケーションをアクティブ化していない状態です。 新規バージョンのアクティブ化 をクリックして、ウィザードを開始いします。

スナップショットの選択 では最終公開バージョンを選択し、 Validate をクリックします。

アプリケーションは正常に検証されました というメッセージを確認し、 オプション をクリックします。

リビジョンIDとして数値(小数も可能)を指定します。オーバーライド、デフォルトを強制使用は任意です(下図の例では1.0、全てのチェック・ボックスにチェックを入れています)。入力が完了したら、 アクティブ化 をクリックします。

アクティブ化完了を待ちます。

アクティブ化完了を確認し、 終了 をクリックします。

本番モードでの実行

Workspaceでアプリケーションを操作していきます。注意点は、テストモードとは異なり、各アクティビティを実行するユーザーは、各アクティビティに割り当てたユーザーもしくはグループ、アプリケーション・ロールに含まれるユーザーである必要があります。

左上の ホーム アイコンをクリックします。

Integration Cloudのホームで、左のメニューにある My Tasks をクリックします。

My Tasksの右に現れる Workspace をクリックします。

左のメニューにある 自分のアプリ をクリックします。

下図のようなEPという文字が入ったアイコンが現れるはずです(背景色はランダム)。アプリケーションの起動はこのアイコンをクリックします。以後はテストモードと同じです。

これで動的プロセスのチュートリアルは完了です。お好みで、このサンプルにルールやアクティビティを追加して拡張してもよいでしょう。