Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ワークフローの開発

この章では、ワークフローを開発してプロダクションに追加する方法を説明します。次の章では、開発時に実行できるオプションのカスタマイズについて詳述します。

この章は以下のトピックで構成されています。

付録 “ワークフロー・サンプルの紹介” では、ENSDEMO ネームスペースで使用できる簡単なサンプルを紹介しています。

概要

以下の図は、プロダクション内のワークフロー要素を示しています。

generated description: workflow components

これらのコンポーネントは以下のとおりです (左から右の順)。

  • メッセージ要求クラスは、プロダクション内の別の場所にある発信元からワークフローの具体的な詳細情報を伝送します。これは、各自が定義できる標準のメッセージ要求クラスです。つまり、Ens.RequestOpens in a new tab のサブクラスまたは別の永続クラスのサブクラス (前者の場合の方が多い) です。

  • メッセージ応答クラスは、当該タスクが完了するか他の形で処理された後に、ワークフローの具体的な詳細情報を発信元に返送します。これは、各自が定義できる標準のメッセージ応答クラスです。つまり、Ens.ResponseOpens in a new tab のサブクラスまたは別の永続クラスのサブクラスです (前者の場合の方が多いです)。

    このドキュメントでは、このクラスや対応する要求クラスの定義に関する特別な詳細情報は提供していません。これらの実装は各自のニーズに全面的に依存しているからです。

  • 通信の調整役として機能するワークフロー・プロセス。ワークフロー・プロセスを作成するには、以下の操作を行います。

    1. ビジネス・プロセス・デザイナを使用して、Ens.BusinessProcess.BPL を基本クラスとするビジネス・プロセスを作成します。このビジネス・プロセスには、受信メッセージを受信するためのロジック、および必要に応じて同じプロダクション内のビジネス・オペレーションを (非同期的に) 呼び出すためのロジックが含まれている必要があります。

    2. このビジネス・プロセスをプロダクションに通常どおりに追加します。

  • 特別なメッセージ・クラスである EnsLib.Workflow.TaskRequestOpens in a new tab は、ビジネス・プロセスから要求を伝送します。

    同様に、特別なメッセージ・クラスである EnsLib.Workflow.TaskResponseOpens in a new tab は、ワークフロー・エンジンから応答を伝送します。

    サブクラスを作成して使用することもできますが、これらのクラスは柔軟な方法で情報を伝送できるように設計されているため、通常はその必要はありません。

  • ワークフロー・オペレーションはタスク要求を受信して、ワークフロー・エンジンと通信し、ワークフロー・エンジンはタスクを特定のユーザに表示します。特に、各ワークフロー・オペレーションにはワークフロー・ロールが 1 つだけ関連付けられています。ワークフロー・オペレーションは、そのワークフロー・ロールに属するすべてのユーザにタスクを表示します (他のユーザにはこれらのタスクは表示されません)。

    これらのタスクのそれぞれを作成するには、EnsLib.Workflow.OperationOpens in a new tab を基本クラスとするビジネス・オペレーションを追加します。構成はほとんど必要ありません。

    または、EnsLib.Workflow.OperationOpens in a new tab のサブクラスを作成して、ワークフロー・エンジンと独自の方法で相互動作するためのそのコールバック・メソッドを実装することもできます。

ビジネス・プロセスの設計

最初のステップは、ビジネス・プロセス・クラスを設計して、いくつかの重要な決定を下すことです。

  1. ワークフローへの呼び出し (人間のプロセス) が発生する箇所を特定します。

  2. これらの各呼び出しはタスクです。各タスクに名前をつけます

  3. タスクが送信される各ワークフロー・ロールに名前をつけます

  4. 各タスクのタスク分配方式を決定します (通常はデフォルト方式)。

  5. ビジネス・プロセスを呼び出すために必要な任意のメッセージ・タイプを作成します。

    このドキュメントでは、これらのメッセージの定義に関する特別な詳細情報は提供していません。これらの実装は各自のニーズに全面的に依存しているからです。

  6. 次の節の説明に従ってビジネス・プロセス・クラスを作成します。

ワークフロー・プロセスの作成

ワークフロー・プロセスを作成するには、"BPL プロセスの開発" の説明に従って、ビジネス・プロセス・デザイナを使用します。

ビジネス・プロセスのタスク別に、以下を実行します。

  • ワークフロー・オペレーションを非同期で呼び出すために <call> を指定します。

  • <call> で、宛先ワークフロー・オペレーションを名前で指定します。各ワークフロー・オペレーションは 1 つのみのワークフロー・ロールと関連付けられており、そのワークフロー・ロールは構成可能な 1 つのユーザ・セットに対応しています。

  • <call> で、適切なタスク要求オブジェクト (EnsLib.Workflow.TaskRequestOpens in a new tab またはサブクラス) を使用し、そのオブジェクトのプロパティを設定します。

    <call> では、タスク応答オブジェクト (EnsLib.Workflow.TaskResponseOpens in a new tab またはサブクラス) を検査し、このオブジェクトを使用して BPL の context 変数を設定することも必要になります (この変数は後の処理で使用されます)。

  • <sync> を設定して、非同期 <call> の結果をキャッチします。

例については、付録 “ワークフロー・サンプルの紹介” を参照してください。

タスク要求の定義

プロセス内の各 <call> では、そのメッセージ・クラスとして EnsLib.Workflow.TaskRequestOpens in a new tab またはサブクラスを使用する必要があります。要求を定義するには、<call> に callrequest 変数のプロパティを設定する必要があります。

以下のテーブルは、EnsLib.Workflow.TaskRequestOpens in a new tab の使用可能なプロパティを一覧表示しています。これらのプロパティはすべてオプションですが、当然ながら、ビジネス・プロセスはワークフロー・エンジンが必要とするすべての情報を送信する必要があります。

プロパティ 目的
%Actions オプション。このタスク用に定義されているアクションのカンマ区切りリスト。例えば、"Approve,Reject,NeedMoreInfo"。これらによって、タスクを確認するときに表示されるアクション・ボタンが決まります。選択したユーザ・アクションは、タスク応答の一部として返されます。
%Command オプション。ワークフロー・エンジンに引き渡されるコマンド文字列。これを使用すると、データ駆動型のカスタム動作をタスクに追加できます。
%FormTemplate オプション。このタスクの HTML フォーム・テンプレートを表示する Caché Server Pages (CSP) ページの名前。
%FormFields オプション。このタスクに関連付けられているフォームに表示されるフィールドのカンマ区切りリスト。
%FormValues オプション。このタスクに関して表示されるフォーム内に表示する値の集まり。
%Message オプション。 このタスクの詳細なメッセージ本文。これは、ユーザがタスクを確認したときに表示されます。
%Priority オプション。 要求したタスクの優先順位 (1 が最高)。この値は、ユーザのワークリスト内にある項目の並べ替えに使用します。
%Subject オプション。このタスクの簡単な要約。これは、[ユーザ] ワークリストに表示されます。
%TaskHandler オプション。このタスクの分配を管理するために使用する応答クラスの名前。この要求の応答タイプとしても使用されます。%TaskHandler で指定するクラスは、EnsLib.Workflow.TaskResponseOpens in a new tab のサブクラスである必要があります。
%Title オプション。 指定した中で、このタスクの処理に適したタイトルの名前。このユーザがタスクに実際に割り当てられているかどうかは、このタスクに関して分配方式をどのように使用するかによって異なります。
%UserName オプション。このタスクの処理に適したユーザの名前。このユーザがタスクに実際に割り当てられているかどうかは、このタスクに関して分配方式をどのように使用するかによって異なります。

タスク応答の使用

前述のとおり、指定されたタスクの <cal> では、タスク応答オブジェクト (EnsLib.Workflow.TaskResponseOpens in a new tab またはサブクラス) を調査し、このオブジェクトを使用して BPL の context 変数を設定することも必要になります (この変数は後の処理で使用されます)。EnsLib.Workflow.TaskResponseOpens in a new tab は、以下のプロパティを定義します。

プロパティ 目的
%Action オプション。タスクが完了すると、タスク完了のためにユーザが選択したアクションの値が、このプロパティに含まれます。"%Actions" を参照してください。
%Actions オプション。このタスク用に定義されているアクションのカンマ区切りリスト。例えば、"Approve,Reject,NeedMoreInfo"。これらによって、タスクを確認するときに表示されるアクション・ボタンが決まります。選択したユーザ・アクションは、タスク応答の %Action プロパティに含めて返されます。
%FormFields オプション。このタスクに関連付けられているフォームに表示されるフィールドのカンマ区切りリスト。これは、最初のタスク要求で指定された値のコピーです。
%FormTemplate オプション。このタスクのフォーム・テンプレートを表示する CSP ページの名前。これは、最初のタスク要求で指定された値のコピーです。
%FormValues オプション。このタスクに関連付けられているフォームの値の集まり (存在する場合)。
%Message オプション。 このタスクの詳細なメッセージ本文。これは、最初のタスク要求で指定された値のコピーです。
%Priority オプション。 要求したタスクの優先順位 (1 が最高)。これは、最初のタスク要求で指定された値のコピーです。
%RoleName オプション。このタスクを処理した役割の名前。これは、最初のタスク要求で指定された値のコピーです。
%Status オプション。このタスクの外部ステータス。タスクの現在のステータスのクエリに使用されます。
%Subject オプション。このタスクの簡単な要約。これは、最初のタスク要求で指定された値のコピーです。
%TaskStatus オプション。このタスクの内部ステータス ([割り当て済み]、[未割り当て]、[取り消し]、[破棄]、[削除])。ワークフロー・エンジンでタスクの管理に使用されます。カスタム・コードでは、このプロパティの値を変更できません。
%UserName オプション。このタスクを最後に処理したユーザの名前。この値は、タスク完了時に設定されます。
%UserRanking オプション。 このタスクを最後に処理したユーザに関連付けられているランキング (該当するユーザに役割が割り当てられたランキングがある場合)。
%UserTitle オプション。このタスクを最後に処理したユーザに関連付けられているタイトル (該当するユーザに役割が割り当てられたタイトルがある場合)。

プロダクションへのワークフロー・プロセスの追加

ワークフロー・プロセスをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの Ensemble, プロダクション構成 ページで表示します。このページにアクセスするには、[Ensemble][構成する][プロダクション] の順にクリックし、[進む] をクリックします。

  2. [プロセス] 列で、[追加] ボタン (プラス記号) をクリックします。

    ダイアログ・ボックスが表示されます。

  3. [ビジネス・プロセス・クラス] で、ビジネス・プロセス・エディタで作成したクラスを選択します。

  4. [プロセス名] に、適切な名前を入力します。

  5. [OK] をクリックします。

その他の設定の詳細は、"Ensemble プロダクションの構成" を参照してください。

プロダクションへのワークフロー・オペレーションの追加

ワークフロー・オペレーションをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの Ensemble, プロダクション構成 ページで表示します。このページにアクセスするには、[Ensemble][構成する][プロダクション] の順にクリックし、[進む] をクリックします。

  2. [オペレーション] 列で、[追加] ボタン (プラス記号) をクリックします。

    ダイアログ・ボックスが表示されます。

  3. [ワークフロー] タブをクリックします。

  4. [クラス名] リストから EnsLib.Workflow.OperationOpens in a new tab クラスを選択します。

    または、カスタム・サブクラスを選択します。

  5. [オペレーション名] に、このビジネス・オペレーションの名前を入力します。この名前は、BPL ビジネス・プロセスの対応する <call> に含まれる target 属性と一致させる必要があります。

  6. 必要に応じて、[自動作成ロール] をクリックします。このオプションを有効にすると、[オペレーション名] で指定されたのと同じ名前のワークフロー・ロールが自動的に作成されます。

    希望に応じて、このオプションを後で有効にすることもできます。

  7. [OK] をクリックします。

その他の設定に関する情報は、"Ensemble プロダクションの構成" を参照してください。

次のステップ

  • ワークフロー・ユーザを適切なワークフロー・ロールと関連付けます。"Ensemble の管理" の “ワークフロー・ロール、ワークフロー・ユーザ、およびワークフロー・タスクの管理” を参照してください。

  • ワークフローのテスト” の章の説明に従って、ワークフローをテストします。

  • 必要に応じて、スーパーバイザがワークフローの進捗状況を監視できるようにするためのダッシュボードを追加します。Ensemble は、特定のワークフロー・メトリックを自動的に収集します。一般的な開発タスクと構成タスクは通常どおりです。

    1. 1 つ以上のビジネス・メトリック・クラスを作成します。"Ensemble プロダクションの開発" の “ビジネス・メトリックの定義” を参照してください。

      各クラスは、ワークフロー・ロールに関する統計情報を報告するメソッドを提供する EnsLib.Workflow.EngineOpens in a new tab クラスのメソッドを呼び出すことができます。

      クイック・リファレンスとして、これらのメソッドは付録 “使用可能なワークフロー・メトリック” に列挙されています。

    2. プロダクションを構成するときに、各ビジネス・メトリックをビジネス・サービスとして追加します。

    3. ダッシュボードを定義します。"Ensemble プロダクションの構成" の “ダッシュボードの定義” を参照してください。

FeedbackOpens in a new tab