非同期型システム連携を監視する仕組み

メッセージ開始/メッセージ送信中間/メッセージ受信中間イベントを組み合わせてシステム連携監視アプリを作成しよう。

こんにちは、古久保です。

Questetra を用いて業務の自動化を進めておられるというお話をちらほら聞きます。
Google Drive 連携、PDF 自動生成工程等、様々な自動処理工程を揃えております。
是非とも積極的なご利用やご評価を頂ければ幸いです。

自動化の文脈の中で外部システムと自動連携を行われているケースは多くございます。
Questetra から見て)外部システムと連携をする際には、様々な接続形態があります。

メッセージ送信中間イベント(http)を用いて連携するケースが多くございますが、
その中でも

* (同期連携型)外部システムから http レスポンスに連携結果を受け取る
* (非同期連携型)メッセージ受信中間イベントを用いて外部システムからアクセスを受け、
 連携結果を受け取る

2つの型があります。
多くが「同期連携型」でありますが、連携先の外部システムの処理時間等の事情により「非同期連携型」を採用されるケースがあるようです。

「同期連携型」の場合、連携エラーは比較的検知しやすいと言えます。(http レスポンスコードで判断できますね)
「非同期連携型」の場合は、最初の連携(Questetra → 外部システム)が正常に実行できると、次の連携(外部システム → Questetra)は、Questetra にアクセスしてくれない限り、エラーを検知できません。
外部システム(及びネットワーク状態等)がどのような状況にあるのかによって Questetra は、ただただ待つだけになります。
一定時間、外部システムからアクセスが無い場合、検知して通知するエラー処理の仕組みが必要となります。

過去に数件、つい先日も1件、お問い合わせを頂いたことから需要はあるのではないかと思い、実現方法を紹介したいと思います。

◆実現概要(外部システム連携アプリ/外部システムからのアクセス監視アプリの連携)

外部システムへ連携するアプリと外部システムからのアクセスを監視するアプリ(アラートアプリ)の2つのアプリの連携で実現します。
<外部システムへ連携するアプリ側>

1.外部システムから待ち受けるメッセージ受信中間イベントと平行で、アラートアプリを起動
2.外部システムからメッセージ受信中間イベントへのアクセスがあるとアラートアプリを終了するよう
 アラートアプリへアクセス

<外部システムからのアクセスを監視するアプリ(アラートアプリ)側>

1.外部システムへ連携するアプリから(起動元の)プロセス ID を受信してアプリ開始
2.アラートアプリ(自身のアプリ)を終了する流れ/アラートを送信する流れを並行で実行
3.アラートアプリ(自身のアプリ)を終了する流れでは、外部システムへ連携するアプリからの
 アクセスを受けて全終了
4.アラートを送信する流れでは、(a)アラート送信時刻をセットして(b)タイマー中間イベントに渡し、
 (c)アラートを送信 ※(a)から(c)を無条件でループ

<連携概要>

シナリオとしては、

1.アラートを受ける
2.外部システムの状況を確認する。
3.状況を確認し、改めて外部システムからアクセスするか、連携データを手動で編集し、
 メッセージ受信中間イベントを強制終了する

というオペレーションを考えています。

◆実現詳細

連携概要のポイントを説明します。
<外部システムからのアクセスを監視するアプリ(アラートアプリ)側>

1.外部システムへ連携するアプリから(起動元の)プロセス ID を受信してアプリ開始

については、以下の設定で起動された「アラートアプリ」のプロセス ID を取得することができます。

<プロセス ID 取得用の設定>

メッセージ開始イベントへアクセスするメッセージ送信中間イベント http でレスポンスを取得するように設定することで実現できます。
(取得は文字型複数行のデータ項目でなければなりません)
<外部システムへ連携するアプリ側>

2.外部システムからメッセージ受信中間イベントへのアクセスがあるとアラートアプリを終了するよう
 アラートアプリへアクセス

については、

<アラートアプリ終了用受信イベントアクセスの設定>

前述の「<プロセス ID 取得用の設定>」で取得したプロセス ID をアラートアプリ終了用のメッセージ受信中間イベントの processInstanceId パラメータにセットし、アクセスすることで実現できます。
<外部システムからのアクセスを監視するアプリ(アラートアプリ)側>

4.アラートを送信する流れでは、(a)アラート送信時刻をセットして(b)タイマー中間イベントに渡し、
 (c)アラートを送信 ※(a)から(c)を無条件でループ

については、

<無条件でループする設定>

条件を設定せずに、「(a)アラート送信時刻をセット」自動工程にループするように設定することで実現できます。

◆あとがき

「アラートアプリ」は、汎用的でありますので非同期型の外部システム連携を行っている様々なアプリから利用できます。
今回のポイントは、「メッセージ開始イベント http のレスポンスからプロセス ID を取得する」にあります。

これによりメッセージ開始イベントにアクセスしたアプリがアクセス先のアプリのメッセージ受信中間イベントを制御できることになります。

メッセージ開始イベントhttp、メッセージ送信中間イベントhttp、メッセージ受信中間ベントをうまく組み合わせることで様々なパターンのアプリ間通信が可能になります。
マニュアルを参照して頂き、様々なシーンで利用してもらえればと思います。

不明点がありましたらご連絡を頂けますようお願い致します。

特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する
HTTP開始の仕組みである[メッセージ開始イベント(HTTP)]を先頭に配置すれば、HTTPリクエストを受信する度に、リクエストデータを引き継いだ新案件が自動起動されるようになります。例えば、基幹システムから “入金督促プロセス” を立ち上げる様なシステム間連携を簡単に構築する事ができます。

http://www.questetra.com/ja/tour/m2/m221/

特定のURIへのHTTPリクエストを待ち受けるように設定する
待受イベント[メッセージ受信中間イベント(HTTP)]をフロー図の途中に配置すれば、各案件を滞留させ、HTTPリクエストを待ち受けさせる事ができます。外部プログラムは、待受中の案件IDと待受場所を指定してリクエストします。

http://www.questetra.com/ja/tour/m2/m226/

業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する
HTTPリクエストイベント[メッセージ送信中間イベント(HTTP)]をフロー図の途中に配置すれば、案件の到達と同時に自動的にHTTPリクエストが送出されるようになります。リクエスト内に上流工程で入力された業務データを埋め込む事も可能です。

http://www.questetra.com/ja/tour/m2/m225/

2017-04-05

Masato Furukubo の紹介

Questetra, Inc. Sales Department
Masato Furukubo の投稿をすべて表示

あわせて読みたい
99.その他 の前の記事 様々な Web サービス・デバイスとクラウド型ワークフローをカンタンに連携させる方法
99.その他 の次の記事 会社のテレワーク環境とPTA会長の仕事
Masato Furukubo の他の記事 処理担当者設定をプロセスモデル外に持つ方法

アーカイブ

 RSS