記事
· 10 hr 前 6m read

InterSystems IRIS Workflow Engine によるタスクのフロー - はじめに

しばらくの間、私はワークフロー機能について何らかの概念実証を行おうと計画していましたが、これは IRIS に存在する他の多くの機能と同様に、お客様にほとんど気付かれないまま終わってしまう傾向があります(その点については申し訳ありません)。 そこで数日前、この機能を構成して、Angular で開発したユーザーインターフェースに接続して使用するための例を作成することに決めました。

記事が非常に長くならなずに読みやすくするために、3 部に分けて説明しようと思います。 この最初の記事では、Workflow の機能とこれから解決する例について説明します。 2 つ目の記事では、Workflow の管理を担うプロファクションの構成と実装について詳しく説明します。 最後に、ウェブアプリケーションを通じて Workflow にある情報にアクセスする方法を説明します。

InterSystems IRIS Workflow Engine

この Workflow 機能を説明するには、IRIS ドキュメントに記載の説明をコピーするのが一番でしょう。

ワークフロー管理システムは、ユーザーへのタスクの分配を自動化します。 事前定義済みの戦略に従ってタスクの分配を自動化することによって、より効率的にタスクを割り当て、タスクの実行に対する責任感を高めることができます。 一般的な例は、顧客から問題に関する報告を受け取り、適切に対応できる組織のメンバーにその報告を送信し、問題が解決したら結果を顧客に報告するヘルプデスクアプリケーションです。

InterSystems IRIS Workflow Engine は、従来のスタンドアロン型のワークフロー管理システムよりもはるかに高レベルの機能を提供しています。

この Workflow 機能は IRIS のどこにあるのでしょうか? 非常に簡単です。管理ポータルからアクセスできます。

サンプルプロジェクトを詳しく見る前に、使用できる各オプションを簡単に説明します。

ワークフローロール

このオプションは、機能を使用するユーザーのロールを分類します。 ロールの定義に混乱するかもしれませんが、プロダクションから作成できるタスクのタイプとして考えています。 これらのロールに割り当てられる名前は、後でプロファクションで宣言し、そのロールに関連するタスクを作成するビジネスオペレーションの名前に一致する必要があります。

ワークフローユーザー

様々なタスクに割り当てられる IRIS ユーザーは、1 つ以上のロールに関連付けられます。 ユーザーは IRIS に登録されている必要があります。

ワークフロータスク

関連情報と共にシステムで作成されるタスクのリスト。 このウィンドウから、タスクのロールに応じた様々なユーザーにタスクを割り当てられます。

タスクは何でしょうか? 非常に簡単です。タスクは、EnsLib.Workflow.TaskRequest クラスのインスタンスであり、このタイプのオブジェクトは、生成されたビジネスプロセスから、クラス EnsLib.Workflow.Operation のビジネスオペレーションに、以前に作成したロールの名前とともに送信されます。 このアクションによって、EnsLib.Workflow.TaskResponse クラスのインスタンスが作成されます。 ビジネスオペレーションは、TaskResponse クラスインスタンスの CompleteTask メソッドが実行されるまで、レスポンスを返しません。

ワークフロー作業リスト

前の機能と同様に、関連する情報と共にタスクのリストも表示されます。

ワークフローの例

この記事に関連するプロジェクトには、慢性患者の治療など、医療組織の一般的な問題に対するソリューションを単純化した例が含まれます。 こういったタイプの患者には、継続的な管理と厳格なモニタリングが必要で、多くの場合、治療に関わる医療専門家にはそれらを行うための最適な手段がありません。

この例では、高血圧症の患者をモニタリングする方法を確認したいと思います。 患者は毎日、血圧計で血圧を測り、その血圧計から InterSystems IRIS がインストールされたサーバーにその読み取り値が送信されることを前提とします。 血圧測定値の収縮期血圧が 140、拡張期血圧が 90 を超える場合、その患者には特定の期間が過ぎてからもう一度血圧を測るように通知されます。2 回目の測定値がもう一度制限を超えた場合、患者と医師の両方にその状況が通知され、処置を決定することができます。

これを行うには、このタスクフローを 2 つのステージに分割します。

ステージ 1: 血圧測定値を毎日受信する。

  1. HL7 メッセージと血圧測定値をプロダクションで受信します。
  2. システムでユーザーの存在をチェックし(存在しない場合は作成)、その後で、ワークフローに関わるロールにユーザーを登録します。
  3. 血圧データを抽出し、アラート基準と比較します。
  4. データがアラート基準を超える場合:
    1. 状況を説明し、血圧をもう一度測定するように要求するための、患者向けのタスクを作成します。
    2. 2 回目の血圧測定値を管理するための自動タスクを作成します。
  5. データがアラート基準を超えない場合、このプロセスは次回の読み取りが翌日受信されるまで閉じられます。

ステージ 2: 最初の測定値がアラート値を超えた後の 2 回目の測定値を受信します。

  1. HL7 メッセージと 2 回目のデータ測定値を受信します。
  2. 自動タスクの復旧が保留されます。
  3. 血圧レベルがアラート基準を超える場合:
    1. 自動タスクは警告ステータスを示して中止されます。
    2. 患者の状況を報告する医師の手動タスクが作成されます。
    3. 状況と、医師に報告されたことを警告する患者の手動タスクが作成されます。
  4. レベルがアラート基準を超えない場合:
    1. 自動タスクは危険がないことを示して中止されます。

次の記事では、上記で説明した内容を反映するフローチャートのデザインについてより詳しく説明します。

ユーザーインターフェース

添付されたスクリーンショットからわかるように、InterSystems IRIS がタスク管理用に提供するユーザーインターフェースは控えめに言っても質素ではありますが、IRIS で得られるメリットの 1 つは、非常に簡単な方法でタスクフローを管理するための API REST を独自に作成できることです。この点については、最後の記事で説明します。

ユーザーに使いやすいインターフェースを提供するために、Angular Material を使用して、Angular で小さなウェブアプリケーションを開発しました。モバイルアプリケーションをシミュレーションするインターフェースを作成できます。

このモバイルアプリケーションは JSON Web Tokens を使って InterSystems IRIS に接続し、IRIS に公開された特定のウェブアプリケーションに HTTP リクエストを送信します。これにより、タスクに対してさまざまなアクターが実行したアクションが、定義されたタスクフローに反映されます。

次回の記事では...

この記事では Workflow の機能に関する紹介を終えたため、次の記事では、BPL を使って提供した例を解決するために必要なタスクフローを実装する方法を説明します。プロダクション全体を構成し、Workflow に関わるメインのクラス(EnsLib.Workflow.TaskRequestEnsLib.Workflow.TaskResponse など)を確認します。

お読みいただきありがとうございました!

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください