ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

6.2.4 非同期アプリケーション連携実行基盤のAPIの設定

組み込んだ非同期アプリケーション連携実行基盤のAPIを編集します。編集が必要な部分は、Javaソースに[TODO]コメントが挿入されています。

値を設定する項目を以下に示します。

値の設定はInterstage StudioのJavaエディタで行います。Javaエディタの詳細については、Interstage Studioのヘルプ一覧から“Java開発ユーザガイド”の“概念”の“Javaエディタ”を参照してください。

非同期アプリケーション連携実行基盤のJava APIの詳細は、“Interstage Business Application Server リファレンス”の“アプリケーションインタフェース(Java)”を参照してください。

■APIを実行したときのメソッドの動作

業務処理開始アプリケーションで利用する非同期アプリケーション連携実行基盤のAPIを実行したときの、メソッドの動作について説明します。APIを実行した結果を考慮してエラー処理を記述するなどの編集を行う必要があります。

フローを起動するAPIの動作

フローを起動するAPIを以下に示します。

APIの使い分けの詳細については、 “■突き放し型フロー起動と待ち合わせ型フロー起動の使い分け”を参照してください。フローを起動するAPIの動作を以下に示します。

メソッドの動作

突き放し型フロー起動API
(sendMessageメソッド)

待ち合わせ型フロー起動API
(sendMessageSyncメソッド)

フローの起動に成功した場合

com.fujitsu.interstage.apfw.client.FlowMapオブジェクトを返却します。
処理結果のメッセージを取得するためには、処理結果のメッセージ取得API(receiveMessageメソッド)を発行します。

◆処理結果のメッセージを取得するAPIの動作”の“sendMessageSyncメソッド”を参照してください。

フローの起動に失敗した場合

FlowException例外(com.fujitsu.interstage.apfw.client.FlowException)を返却します。例外情報からエラーの対処を行い、業務処理開始アプリケーションを再実行してください。例外情報の取得についての詳細は“6.3 エラー処理”の“■com.fujitsu.interstage.apfw.client.FlowExceptionのハンドリング”を参照してください。

◆処理結果のメッセージを取得するAPIの動作”の“sendMessageSyncメソッド”を参照してください。

注意

フローの起動に成功した後、メッセージのルーティング中にエラーが発生することがあります。エラー情報は[フローの起動に成功した場合]に従って取得します。詳細については“6.3 エラー処理”の“■フローを実行した結果のハンドリング”を参照してください。

◆処理結果のメッセージを取得するAPIの動作

処理結果のメッセージを取得するAPIを以下に示します。

APIの使い分けの詳細については、 “■突き放し型フロー起動と待ち合わせ型フロー起動の使い分け”を参照してください。処理結果のメッセージを取得するAPIの動作を以下に示します。

動作

receiveMessageメソッド

sendMessageSyncメソッド

処理結果のメッセージ取得に成功した場合

処理結果のメッセージである、com.fujitsu.interstage.apfw.client.FlowMapオブジェクトを返却します。
処理結果のメッセージについては、“6.3 エラー処理”の“■フローを実行した結果のハンドリング”に従って、解析してください。

処理結果のメッセージ取得に失敗した場合
(nullを返却)

以下の条件などにより、結果受信キューに対象の処理結果のメッセージが存在しないときに、nullを返却します。

  • 処理中

  • ユーザがパラメタで指定したコリレーションIDに誤りがある

  • 業務処理実行アプリケーションが、ハングなどの事象により処理を返さない

処理結果のメッセージを再取得するためには、receiveMessageメソッドの再発行が必要です。

以下の条件などにより、setTimeoutメソッドで指定したタイムアウト時間に達するまでに、結果受信キューに対象の処理結果のメッセージが到達しない場合は、nullを返却します。

  • 処理中

業務処理実行アプリケーションが、ハングなどの事象により処理を返さない

処理結果のメッセージを再取得するためには、receiveMessageメソッドの発行が必要です。
APIのタイムアウトによりnullが返却された場合に自動採番されたコリレーションIDを取得する方法については、“Interstage Business Application Server リファレンス”の“アプリケーションインタフェース(Java)”で“sendMessageSyncメソッド”を参照してください。

処理結果のメッセージ取得に失敗した場合
(例外情報を返却)

FlowException例外(com.fujitsu.interstage.apfw.client.FlowException)を返却します。例外情報の取得についての詳細は“6.3 エラー処理”の“■com.fujitsu.interstage.apfw.client.FlowExceptionのハンドリング”を参照してください。

注意

補償処理メッセージが発行された場合の情報を取得する方法は以下になります。

処理結果のメッセージ取得に成功した場合、処理結果のメッセージであるcom.fujitsu.interstage.apfw.client.FlowMapオブジェクトからgetErrorListメソッドを行うことで、補償処理の情報が格納されたオブジェクト配列を取得することができます。
詳細は“6.3 エラー処理”の“■フローを実行した結果のハンドリング”を参照してください。

■業務データの初期値を設定する

非同期アプリケーション連携実行基盤のAPIを組み込むと、以下の業務データ設定ソースが挿入されています。

業務データの型

メソッド

規定値

String

putString

null

String配列

putStringArray

null

Byte

putByte

(byte)0

Byte配列

putByteArray

null

Short

putShort

(short)0

Short配列

putShortArray

null

Integer

putInteger

0

Integer配列

putIntegerArray

null

Long

putLong

0L

Long配列

putLongArray

null

Float

putFloat

0.0f

Float配列

putFloatArray

null

Double

putDouble

0.0d

Double配列

putDoubleArray

null

Boolean

putBoolean

false

Boolean配列

putBooleanArray

null

ユーザ定義型情報

putObject

null

バイナリ

putBinary

null

業務データ設定ソースの例を以下に示します。

// 業務データを作成します。
FlowMap flowMap = new FlowMap();
// TODO 業務データ"要素A"の値をString型で指定してください。
// この業務データはコリレーションIDです。
// 値を指定しない場合は、自動採番機能が有効になります。
flowMap.putString("要素A", "");
// TODO 業務データ"要素B"の値をint型で指定してください。
flowMap.putInteger("要素B", 0);
// TODO 業務データ"要素C"の値をlong型で指定してください。
flowMap.putLong("要素C", 0L);

初期値の設定方法を以下に示します。

例)業務データの型がStringの場合

  1. 以下のメソッドが挿入されています。メソッドパラメタに値を設定します。
    2番目のパラメタに、初期状態の業務データの値を設定します。

    flowMap.putString("要素A", "");

    注意

    メソッドの1番目のパラメタはキー(業務データ名)が入力されています。変更すると、正しく業務データの値が設定されなくなるため、変更しないでください。

エラー処理を記述する

業務処理開始アプリケーションで利用する非同期アプリケーション連携実行基盤のAPIを実行したときのメソッドの動作に従ってエラー処理を記述します。
非同期アプリケーション連携実行基盤のAPIを実行したときのメソッドの動作は、“■APIを実行したときのメソッドの動作”を参照してください。
詳細については“6.3 エラー処理”を参照してください。

コリレーションIDを指定する

6.2.3.2 処理結果のメッセージ取得の組込み”を行った場合、コリレーションIDを指定する必要があります。

APIを組み込むと、以下のソースが挿入されています。

// TODO cidにコリレーションIDをString型で指定してください。
FlowMap result = flowClient.receiveMessage(cid);

“cid”の値を修正します。receiveMessageの引数には、必ずsendMessageを実行したコリレーションIDを指定してください。