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?

Ensemble 内のワークフローの概要

この章では、Ensemble 内のワークフロー機能の概要を説明します。以下のトピックについて説明します。

概要

ワークフロー管理システムによって、ユーザ間でのタスクの分配が自動化されます。事前に設定した方式に従ってタスクの分配を自動化することで、タスクの割り当てが効率化されると共に、タスク実行の責任がより明確になります。一般的な例としては、顧客から問題レポートを受け取り、適切な組織のメンバにそれらのレポートを転送して対応を求め、問題が解決されると、顧客に結果を報告するヘルプ・デスク・アプリケーションが挙げられます。

これ以降の項で説明するように、Ensemble ワークフロー・エンジンは、従来のスタンドアロンのワークフロー管理システムに比べ、きわめて高レベルの機能を備えています。

Ensemble への統合

Ensemble ワークフロー・エンジンでは、Ensemble アーキテクチャが最大限に活用されます。このため、Ensemble ワークフロー・エンジンは、企業のアプリケーション、テクノロジ、データ、および人間の参加者とシームレスに連携できます。このコラボレーションで最も重要な事項は、以下のとおりです。

  • “ストレートスルー” ビジネス・プロセス (つまり、完全に自動化されたビジネス・プロセス) は、特に大量の注文の承認などの例外的なケースを扱うために人間の介入を組み込むことができます。

  • Ensemble ワークフローは企業アプリケーションを呼び出して、人間のワークフロー内のイベントを通知したり、人間のワークフローが必要とする追加情報を入手したりできます。

  • 永続性 : ワークフロー・エンジンは Ensemble 永続ストレージ機能を活用して、完了するまで数日または数週間かかる、長期間実行されるビジネス・プロセスをサポートします。

複合アプリケーションのサポート

Ensemble では、開発者が企業内のさまざまなシステムとテクノロジにまたがる複合アプリケーションを簡単に作成することができる、豊富な機能が備えられた開発環境を利用できます。ワークフロー・エンジンは Ensemble 内に完全に統合されているため、以下のことが実現します。

  • 複合アプリケーションによって、地理的、技術的および部門の区分を越える複雑な情報交流のしくみを容易に組み込むことができます。

  • ユーザベースのプロセス定義はビジネス・ロジックから切り離すことができ、開発者やアナリストは各セグメントを 1 つのまとまりの中に明確に定義できます。

  • ワークフロー・システムは、機能および性能が増し、作成しやすく、メンテナンスが簡単になりました。

生産性機能

Ensemble ワークフロー・エンジンでは、以下のような生産性ツールを使用する自動統合が実現します。

  • ビジネス・プロセス・デザイナ : ワークフロー・アナリストは、Ensemble のグラフィカル編集ツールであるビジネス・プロセス・デザイナを使用してワークフローを作成できます。ビジネス・プロセス・デザイナは、ビジネス・プロセス・ダイアグラムに基づいて本格的な実用コードを自動的に生成します。

  • ビジネス・アクティビティ・モニタリング : 開発者は企業向けダッシュボードおよびイベント・トリガを簡単に作成して、企業アナリストに現在のワークフローのステータスを提示できます。

  • ビジュアル・トレース : すべてのタスクはメッセージとして送信されるので、システム管理者は高機能なビジュアル・トレース・メッセージ・トレース・ツールを使用してタスクのステータスを表示できます。

プロダクション内のワークフロー・コンポーネント

以下の図は、プロダクション内のワークフロー・コンポーネントを示しています。

generated description: workflow intro

ワークフロー・プロセスは、タスク要求をワークフロー・オペレーションに送信する BPL プロセスです。このプロセスは、これらのワークフロー・オペレーション間で作業を調整する役割を果たします。このプロセスは、標準のビジネス・オペレーション (人的介入を必要としないもの) を呼び出すこともあります。ビジネス・プロセスを完了するには、両方のタイプの要素が必要な場合があります。

ワークフロー・オペレーションは、ワークフロー・ロールを表す特定用途のビジネス・オペレーションです (次の節で説明)。ワークフロー・オペレーションは、ワークフローの受信トレイを介して、関連付けられたロールに属するすべてのユーザにタスクを送信します。

ワークフロー・プロセスは、ビジネス・プロセスが他の種類の要求メッセージを他の種類のビジネス・オペレーションに送信するのとまったく同じ方法で、ワークフロー・オペレーションにタスク要求を送信します。

Ensemble 用語では、ワークフロー・タスクとは、進行中のビジネス・プロセスをサポートするためにオフラインで実行される処理の項目です。Ensemble は、タスク要求と呼ばれる特定用途の Ensemble メッセージ・オブジェクトを使用してタスクを表します。タスク要求は、そのタスクの作業に関する情報を伝搬します。ワークフロー・プロセスは、タスク要求を送信して、タスク応答を受信します。他のすべてのメッセージと同様に、これらのメッセージは削除されるまでデータベースに保存されます (仮に削除される場合)。

ワークフロー・ロールとワークフロー・ユーザ

一般的な組織では、複数のユーザが特定の同一タスクを実行できることがあります。したがって、複数のユーザへのタスク分配を統制するために、Ensemble ではワークフロー・ロールが使用されます。ワークフロー・ロールは、特定の種類のタスクを実行できるユーザのリストです。

理論的には、1 つの企業では、ワークフロー・ロールをいくつでも定義できます。実際には、ロールは社内で、経理、財務、窓口、マネージャ、スーパーバイザ、役員などの部門や職位にマップします。

任意の数のワークフロー・ユーザをワークフロー・ロールのメンバにできます。ロールへのユーザの割り当ては、実際的な視点および組織的な視点から考えて、適切である必要があります。あるユーザにタスクの実行を許可する場合、そのユーザは対応するワークフロー・ロールのメンバである必要があります。

ワークフロー・ロールは、プロダクションごとではなく、Ensemble ネームスペースごとに定義されます。つまり、同じワークフロー・ロール定義を、同じ Ensemble ネームスペース内のすべてのプロダクションで使用できます。ワークフロー・ユーザが Ensemble ユーザ・アカウントに対応する場合は (通常はそうですが)、これと同じことがワークフロー・ユーザにも当てはまります。

ワークフローのユーザ・インタフェース

Ensemble では現在、ワークフローをサポートするための 2 つのユーザ・インタフェースが用意されています。これらのユーザ・インタフェースはそれぞれ異なるユーザ群を対象にしています。

実装担当者とスーパーバイザ

管理ポータルには、実装担当者やスーパーバイザがワークフローのロール、ユーザ、およびタスクを管理するために使用できるページが用意されています。これらのページにアクセスするには、[Ensemble] を選択して、[管理] をクリックし、[ワークフロー] をクリックします。

これらのページはエンド・ユーザ向けではありません。スーパーバイザはタスクを割り当てたり取り消したりできますが、他のアクション (タスクを完了済みとしてマークするなど) はここでは実行できません。

詳細は、"Ensemble の管理" の “ワークフロー・ロール、ワークフロー・ユーザ、およびワークフロー・タスクの管理” を参照してください。

エンド・ユーザ

ユーザは DeepSee ユーザ・ポータル内で自身のワークフロー・タスクを管理し、このポータルには Ensemble ダッシュボード (および DeepSee ダッシュボード) も表示されます。DeepSee ユーザ・ポータルには管理ポータルからアクセスできますが、多くの場合は、お使いのアプリケーションで DeepSee ユーザ・ポータルへの直接リンクが用意されています(ユーザ・ポータルにはタイトルはないため、すべてのユーザ向けの汎用として適しています)。

Ensemble ワークフロー・ユーザに対しては、ユーザ・ポータルのメイン領域にワークフローの受信トレイが表示されます。以下に例を示します。

generated description: workflow inbox item in portal

ユーザが [ワークフローの受信トレイ] をクリックすると、ユーザ・ポータルには次のような内容が表示されます。

generated description: workflow inbox contents

ユーザがタスクをクリックすると、対応するタスク・フォームが表示されます (このタスク・フォームを構成またはカスタマイズできます)。以下に例を示します。

generated description: workflow tasks details

詳細は、"DeepSee エンド・ユーザ・ガイド" の “ポータルの機能の使用法” を参照してください。

タスクのライフ・サイクル

Ensemble プロダクション内のタスクのライフ・サイクルは以下のとおりです。

  1. ワークフロー・プロセスは何らかの入力を受信してから、タスク要求 (メッセージ) を作成します。

  2. ワークフロー・プロセスはこのタスク要求をワークフロー・オペレーションに送信します。

  3. ワークフロー・オペレーションは、ワークフロー・エンジンへタスク要求を送信します。

  4. ワークフロー・エンジンは、適切なタスク応答オブジェクトをインスタンス化します。このオブジェクトには、元のタスク要求からのフィールドが含まれており、同じユーザへのタスク分配を管理します。

  5. タスク分配は、デフォルト方式またはカスタム分配方式のどちらかに従って行われます。詳細は、この章で後出する “タスク分配のオプション” を参照してください。

  6. タスクが割り当てられて完了すると、ワークフロー・エンジンはビジネス・プロセスへタスク応答を返します。

タスク・フォームとカスタマイズ・オプション

DeepSee ユーザ・ポータル (前述の説明を参照) は、各ユーザに対して 1 つのワークフロー受信トレイを提供します。ユーザがタスクをクリックすると、そのタスクに固有のフォームが表示されます。このフォームは次のようにカスタマイズできます。

  • このフォームはメタデータから生成されます。メタデータは、再利用可能なテンプレート・ファイル内に含まれているか、企業スタッフによって実行時に定義されます。

  • このフォームは、企業の標準に適合するように簡単にスタイル設定できます。

  • 企業がユーザに経験を積ませるために社内技術の活用を望む場合は、Ensemble のワークフロー・タスクを XML 文書、Web サービス、.NET、Java、C++ オブジェクトによって、またはリレーショナル構造として、さまざまな方法で社内の技術に対して使用できます。

タスク分配のオプション

ワークフロー・オペレーションがタスク要求を受け取ると、要求が Ensemble ワークフロー・エンジンに渡され、そのロール用に定義されたユーザの 1 人にタスクが分配されます。タスクを分配するために使用される方式は Ensemble デフォルトで、以下のように機能します。

  • 各ワークフロー・ユーザに対して 1 つのワークリストが存在し、このワークリストには、そのユーザに現在割り当てられているか関連付けられているすべてのタスクが一覧表示されます。特定のユーザに対するアクティブなタスクのみがワークリストに表示されます。タスクは、完了、破棄、取り消し、または別のユーザへの再割り当てのいずれかが行われた場合、リストから削除されます。

  • ワークフロー・エンジンは、要求が送信されたワークフロー・ロールの各ユーザ用のワークリストで受け取るすべてのタスク要求を表示します。タスクが最初に表示される場合、ステータスは [未割り当て] です。このタスクは、これらのすべてのユーザと関連付けられていると表現されます。ステータスが [未割り当て] である間に、関連付けられた各ユーザは、自分のワークリストのタスクを確認します。

  • ユーザはタスクの所有権をスーパーバイザによる割り当て、またはデフォルトによる割り当てから取得できますが、通常所有権を取得するにはタスクを受け入れる必要があります。ワークフロー・ロール内の任意のユーザは、ワークフローの受信トレイを使用して、FCFS (first-come, first-served : 先着順) 方式で自身のワークリスト上の任意のタスクを受け入れることができます。

  • ユーザがタスクの所有権を取得すると、タスクはそのユーザに割り当てられたことになります。タスクのステータスは、[未割り当て] から [割り当て済み] に変わります。このタスクはそのタスクを受け入れたユーザのワークフロー受信トレイには残りますが、そのワークフロー・ロールの他のユーザのワークフロー受信トレイからは消えます。

  • タスク要求には、特定のユーザを優先することを表すことができるプロパティがあります。そのユーザが非アクティブであるか、タスク要求が受信された時点で定義されていない場合、ワークフロー・エンジンはワークフロー・オペレーションにエラーを返し、タスクは実行されません。

  • スーパーバイザは管理ポータルのワークフロー・ページからアクティブなタスクを再割り当てすることができます。この場合、タスクは以前割り当てられたユーザのワークリストから消えて、新しく割り当てられたユーザのワークリストに表示されます。

  • 割り当てられたユーザは、タスクを完了せずに、そのタスクを放棄する場合があります。ユーザが未完了の状態のタスクを放棄すると、そのタスクは元の [未割り当て] のステータスに戻り、ワークフロー・エンジンはそのタスクを、それぞれの関連付けられたユーザ (ワークフロー・ロール内の各ユーザ) のワークフロー受信トレイに表示します。

  • ワークフローの進行中にスーパーバイザがユーザ定義を削除するか、ユーザを非アクティブとしてマーキングすると、ユーザが突然自分のタスクをすべて放棄した場合と同じ結果になります。つまり、ユーザのワークリストにある各タスクは [未割り当て] ステータスになり、ワークフロー・エンジンはそのタスクが最初に送信された先であるワークフロー・ロールに属するすべてのユーザのワークフロー受信トレイに各タスクを表示します。

  • スーパーバイザが、ワークリストの進行中にワークフロー・ロール定義を削除した場合、そのロールに対する未処理の要求は完了できますが、そのロールに対し、その後で要求を行うとエラーが発生します。ワークフロー・オペレーションの名前と (存在しない) ロール定義の名前の間に不一致が発生するためです。

  • 各タスク要求は、1 つまたは複数のアクションを指定します。各アクションは、関連付けられたタスク・フォームで [承認] や [放棄] などのボタンとして表示される文字列です。割り当てられたユーザはこれらのボタンの 1 つをクリックして、タスクを完了させ、ビジネス・プロセスに応答を返信できます。

  • 割り当てられたユーザがタスクに対するアクション・ボタンをクリックすると、ワークフロー・エンジンが、ユーザが選択したアクション名を含む、タスク応答オブジェクトのさまざまなプロパティを設定してワークフロー・オペレーションにこの応答を返し、ここから元の要求ビジネス・プロセスに応答が渡されます。ワークフロー・エンジンは、タスクを [完了] とマーキングして、すべてのワークリストからそのタスクを削除します。

  • 完了後、すべてのタスクの完全なレコードはプロダクションのメッセージ・ウェアハウスに残り、管理ポータルから表示できます。ワークフローに直接関連するタスクの詳細は、Workflow Management Portal から表示できます。これは、メッセージが適切に完了せずに破棄されたか取り消された場合、またはエラーが発生した場合でも当てはまります。

タスクの分配に使用される方式は、タスク応答クラス EnsLib.Workflow.TaskResponseOpens in a new tabOnNewTask() メソッドに埋め込まれます。必要に応じて、このクラスとそのメソッドのサブクラスを作成して、ロジックを変更できます。手順については、“ワークフローへのカスタム機能の組み込み” を参照してください。

カスタム・タスク分配

ワークフロー設計者は、ワークフロー定義内でさまざまなタスク分配方式を使用できます。Ensemble ワークフロー・エンジンには以下の方式が組み込まれています。

  • FCFS (first come, first served)

  • ジョブのタイトルによる割り当て

  • 名前による割り当て

  • ユーザ定義のランキングによる割り当て

  • 現在のユーザの作業負荷による割り当て

また、カスタムのタスク分配方式を新規作成することもできます。

FeedbackOpens in a new tab