Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編

[目次][用語][索引][前へ][次へ]

付録B.1 カスタムアダプタ開発フレームワークのAPI

ここでは,サービスプラットフォームが提供するカスタムアダプタ開発フレームワークのAPIについて説明します。

カスタムアダプタ開発フレームワークで定義されているインターフェースおよび例外クラスは,次の場所に格納されています。

 
<サービスプラットフォームのインストールディレクトリ>\CSC\lib\csc_adapter.jar
 

汎用カスタムアダプタをコンパイルするときは,このJARファイルをクラスパスに含めてください。

<この項の構成>
(1) プロトコルコンバータインターフェース
(2) アダプタコンテキストインターフェース
(3) メッセージインターフェース
(4) 例外クラス

(1) プロトコルコンバータインターフェース

(a) CSCMsgCustomProtocolConverterインターフェース

説明
プロトコルコンバータを実装するためのインターフェースです。
CSCMsgCustomProtocolConverterのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。

形式
 
public interface CSCMsgCustomProtocolConverter
{
  public void start()
          throws CSCMsgCustomAdapterException;
  public void stop();
  public void setCustomAdapterContext(CSCMsgCustomAdapterContext adapterContext);
  public void invoke(CSCMsgRequestMessage requestMessage, 
                     CSCMsgResponseMessage responseMessage)
          throws CSCMsgCustomAdapterException;
}
 

メソッド
CSCMsgCustomProtocolConverterインターフェースのメソッドを次の表に示します。
メソッド名 説明
startメソッド 汎用カスタムアダプタが開始されるときに呼び出されるメソッドです。プロトコルコンバータ開始処理を実装します。
このメソッドは,一度だけ呼び出されます。
stopメソッド 汎用カスタムアダプタが終了されるときに呼び出されるメソッドです。プロトコルコンバータ終了処理を実装します。
このメソッドは,一度だけ呼び出されます。
setCustomAdapterContextメソッド アダプタコンテキストが設定されるときに呼び出されるメソッドです。与えられたアダプタコンテキストをプロトコルコンバータのインスタンスフィールドに格納する処理を記述します。
このメソッドは,一度だけ呼び出されます。
invokeメソッド 汎用カスタムアダプタを介してサービス部品を呼び出すときに呼び出されるメソッドです。サービス部品を呼び出す処理を記述します。
このメソッドは,サービスアダプタの呼び出し要求があるたびに呼び出されます。
カスタムアダプタ開発フレームワークからの各メソッドの呼び出し順序を次の図に示します。

図B-1 カスタムアダプタ開発フレームワークからの各メソッドの呼び出し順序

[図データ]
1. コンストラクタ
プロトコルコンバータは,汎用カスタムアダプタ開始時に,カスタムアダプタ開発フレームワークから呼び出されたデフォルトコンストラクタによってインスタンス化されます。
2. setCustomAdapterContextメソッド
プロトコルコンバータクラスがインスタンス化された直後に,カスタムアダプタ開発フレームワークから呼ばれます。このメソッドは,汎用カスタムアダプタの開始時に一度だけ呼ばれます。引数として受け取ったアダプタコンテキストは,プロトコルコンバータのインスタンスフィールドに保持してください。
3. startメソッド
setServiceAdapterInfoメソッドの直後にカスタムアダプタ開発フレームワークから呼ばれます。このメソッドは,汎用カスタムアダプタの開始時に一度だけ呼ばれます。
4. invokeメソッド
サービス部品呼び出し処理時にカスタムアダプタ開発フレームワークから呼ばれます。このメソッドで,プロトコル変換とサービス呼び出し処理を行います。
5. stopメソッド
汎用カスタムアダプタがHCSCサーバから削除される直前にカスタムアダプタ開発フレームワークから呼ばれます。汎用カスタムアダプタの終了時処理を行います。このメソッドは,汎用カスタムアダプタの終了時に一度だけ呼ばれます。

注意事項
  • publicなデフォルトコンストラクタ
    カスタムアダプタ開発フレームワークは,このインターフェースを実装したクラスをインスタンス化するときに,デフォルトコンストラクタを使用します。そのため,このインターフェースを実装したクラスでは,publicなデフォルトコンストラクタを実装する必要があります。
  • マルチスレッド
    プロトコルコンバータは,複数の汎用カスタムアダプタのインスタンスから共有されるため,スレッドセーフなクラスを実装する必要があります。
  • 例外の送出
    CSCMsgCustomProtocolConverterの各メソッドでは,指定された例外だけ送出できます。java.lang.RuntimeExceptionおよびその派生クラスは送出しないでください。送出した場合,動作は保証されません。

 

●startメソッド
説明
汎用カスタムアダプタが開始されるときに呼び出されるメソッドです。
汎用カスタムアダプタのライフサイクルを通じて使用するリソースは,このメソッドで確保することを推奨します。
形式
 
public void start()
  throws CSCMsgCustomAdapterException;
 
パラメタ
なし。
例外
jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgCustomAdapterException:
startメソッドの実行に失敗した場合に発生させます。
戻り値
なし。

 

●stopメソッド
説明
汎用カスタムアダプタ終了時に呼び出されるメソッドです。汎用カスタムアダプタの終了処理を記述します。
形式
 
public void stop();
 
パラメタ
なし。
例外
なし。
戻り値
なし。

 

●setCustomAdapterContextメソッド
説明
アダプタコンテキストが設定されるときに呼び出されるメソッドです。
このメソッドのあとに必ずstartメソッドを呼び出します。
このメソッドで受け取ったアダプタコンテキストインターフェースは,汎用カスタムアダプタのライフサイクルを通じて保持する必要があります。
形式
 
public void setCustomAdapterContext(CSCMsgCustomAdapterContext adapterContext);
 
パラメタ
adapterContext:
CSCMsgCustomAdapterContextのリファレンスが渡されます。
例外
なし。
戻り値
なし。

 

●invokeメソッド
説明
汎用カスタムアダプタを経由してサービス部品を呼び出すときに,呼び出されるメソッドです。サービス部品を呼び出す処理を記述します。
requestMessageに格納されている要求電文を基にサービス部品を呼び出します。
通信モデルが同期の場合,応答電文はresponseMessageを格納します。
通信モデルが非同期の場合,responseMessageにはnullが渡されます。
形式
 
public void invoke (CSCMsgRequestMessage requestMessage, 
                    CSCMsgResponseMessage responseMessage)
  throws CSCMsgCustomAdapterException;
 
パラメタ
  • requestMessage:
    要求電文が格納されたCSCMsgRequestMessageのリファレンスが渡されます。
  • responseMessage:
    通信モデルが同期の場合,応答電文を格納するCSCMsgResponseMessageのリファレンスが渡されます。通信モデルが非同期通信の場合,nullが渡されます。
例外
jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgCustomAdapterException:
invokeメソッドの実行に失敗した場合に発生させます。
戻り値
なし。

(2) アダプタコンテキストインターフェース

(a) CSCMsgCustomAdapterContextインターフェース

説明
プロトコルコンバータがアダプタ情報を取得するためのインターフェースです。CSCMsgCustomAdapterContextのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。
アダプタコンテキストインターフェースは,汎用カスタムアダプタ開始処理の直前に,setCustomAdapterContextメソッドの引数として入力されます。プロトコルコンバータでは,この引数をインスタンスフィールドとして保持し,必要な情報を取得します。

形式
 
public interface CSCMsgCustomAdapterContext
{
  public String getAdapterName();
  public Properties getProperties();
  public byte[] getResourceAsBytes(String fileName)
    throws CSCMsgResourceAccessException;
  public java.io.InputStream getResourceAsStream(String fileName)
    throws CSCMsgResourceAccessException;
}
 

メソッド
CSCMsgCustomAdapterContextインターフェースのメソッドを次の表に示します。
メソッド名 説明
getAdapterNameメソッド 汎用カスタムアダプタの名称を取得します。
getPropertiesメソッド カスタムアダプタプロパティファイルの内容をPropertiesとして取得します。
getResourceAsBytesメソッド リソースファイルの内容をバイナリ形式で取得します。
getResourceAsStreamメソッド リソースファイルにアクセスするためのストリームを取得します。

 

●getAdapterNameメソッド
説明
汎用カスタムアダプタの名称を取得します。
形式
 
public String getAdapterName();
 
パラメタ
なし。
例外
なし。
戻り値
汎用カスタムアダプタの名称を返却します。

 

●getPropertiesメソッド
説明
カスタムアダプタプロパティファイルの内容をPropertiesとして取得します。
形式
 
public Properties getProperties();
 
パラメタ
なし。
例外
なし。
戻り値
プロパティファイルの内容を返却します。

 

●getResourceAsBytesメソッド
説明
リソースファイルの内容をバイナリ形式で取得します。
形式
 
public byte[] getResourceAsBytes(String fileName)
  throws CSCMsgResourceAccessException;
 
パラメタ
fileName:
アクセスしたいリソースのファイル名を指定します。
例外
CSCMsgResourceAccessException:
fileNameで指定したリソースが見つからなかった,またはjava.io.IOExceptionが発生しました。
戻り値
リソースファイルの内容をバイナリ形式で返却します。

 

●getResourceAsStreamメソッド
説明
リソースファイルにアクセスするためのストリームを取得します。
形式
 
public java.io.InputStream getResourceAsStream(String fileName)
  throws CSCMsgResourceAccessException;
 
パラメタ
fileName:
アクセスしたいリソースのファイル名を指定します。
例外
CSCMsgResourceAccessException:
fileNameで指定したリソースが見つからなかった,またはjava.io.IOExceptionが発生しました。
戻り値
リソースファイルの内容をストリーム形式で返却します。
注意事項
このメソッドで取得したストリームをstaticなフィールドに割り当てないでください。メモリリークが発生するおそれがあります。

 

(3) メッセージインターフェース

HCSCサーバとプロトコルコンバータの間でメッセージを交換するためのインターフェースの一覧を次の表に示します。

表B-1 メッセージ操作に使用するAPIの一覧

インターフェース名 説明
CSCMsgMessageConstantインターフェース メッセージの操作に必要な定数を定義します。
CSCMsgRequestMessageインターフェース サービス部品呼び出しに必要な情報(オペレーション名,電文など)を取得するためのメソッドを提供します。
CSCMsgResponseMessageインターフェース サービス部品呼び出し結果(電文またはフォルト情報)を格納するためのメソッドを提供します。
(a) CSCMsgMessageConstantインターフェース

説明
プロトコルコンバータがメッセージの操作に必要な定数を定義するインターフェースです。CSCMsgMessageConstantのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。
プロトコルコンバータで要求メッセージに格納されている電文の種類,または応答メッセージに格納する電文の種類を確認するためにこの定数を使用します。

形式
 
public interface CSCMsgMessageConstant
{
  public static final int MESSAGE_TYPE_NONE;
  public static final int MESSAGE_TYPE_XML;
  public static final int MESSAGE_TYPE_BINARY;
  public static final int MESSAGE_TYPE_ANY;
}
 

メンバ属性
MESSAGE_TYPE_NONE:
電文が格納されていないことを示します。
MESSAGE_TYPE_XML:
電文の形式がXML形式(DOM形式)であることを示します。
MESSAGE_TYPE_BINARY:
電文の形式がバイナリであることを示します。
MESSAGE_TYPE_ANY:
電文の形式が任意形式であることを示します。

 

(b) CSCMsgRequestMessageインターフェース

説明
サービス部品の呼び出しに必要な情報(オペレーション名,電文など)を取得するためのメソッドを提供するインターフェースです。
CSCMsgRequestMessageのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。

形式
 
public interface CSCMsgRequestMessage
{
  public byte[] getBytes() 
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgInvalidMessageException;
  public Map getMessageContext();
  public int getMessageType();
  public String getOperationName();
  public org.w3c.dom.Document getXMLDocument() 
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgInvalidMessageException;
  public byte[] getXMLBytes() 
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgInvalidMessageException;
}
 

メソッド
CSCMsgRequestMessageインターフェースのメソッドを次の表に示します。
メソッド名 説明
getBytesメソッド バイナリ形式の電文を取得します。
getMessageContextメソッド ビジネスプロセス経由で汎用カスタムアダプタを呼び出した場合に経由したビジネスプロセスに関する情報を返却します。
getMessageTypeメソッド 要求メッセージに格納されている電文の種別を取得します。
getOperationNameメソッド サービス部品呼び出し時に呼び出すオペレーションの名称を取得します。
getXMLDocumentメソッド XML形式の電文を取得します。
getXMLBytesメソッド XML形式の電文をバイト配列で取得します。

 

●getBytesメソッド
説明
バイナリ形式の電文を取得します。
形式
 
public byte[] getBytes() 
  throws CSCMsgIllegalMessageTypeException,
         CSCMsgInvalidMessageException;
 
パラメタ
なし。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    電文の形式がバイナリではありません。または,電文が格納されている状態です。電文の種別がXML形式の場合は,このメソッドを使用して電文を取得することはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    格納されている電文が不正です。
戻り値
設定されている電文の種別がバイナリ形式(MESSAGE_TYPE_BINARY)の場合,バイト配列で応答を返します。
電文が格納されていない(MESSAGE_TYPE_NONE)場合,0バイトのバイト配列(長さ0の配列)を返します。
注意事項
  • このメソッドで取得したバイナリ電文(バイト配列)については,変更しても問題ありません。
  • このメソッドを実行したときに,オブジェクトのコピーを作成します。そのため,再度このメソッドを発行すると,変更前のオブジェクトを再取得することになるので注意してください。

 

●getMessageContextメソッド
説明
ビジネスプロセス経由で汎用カスタムアダプタを呼び出した場合は経由したビジネスプロセスに関する情報を返却します。
返却される情報の形式はjava.util.Mapです。
返却されるMapは,Collections#unmodifiableMap()が返したオブジェクトです。
そのため,変更できません。
また,返却されるMapは同期化されないため複数スレッドで共有する場合は排他処理が必要です。
なお,ビジネスプロセスを経由しない呼び出しの場合は次の表のHCSCサーバ名からJ2EEサーバ名までの情報だけが返却されるMapに含まれます。

表B-2 取得情報一覧

情報種別 Mapの内容 説明
要素
要素名 要素の型 値の型
ビジネスプロセス名 CSCMsgCustomAdapterConstant.ContextType.BP_DEFINITION_NAME enum java.lang.String 汎用カスタムアダプタの呼び出し元のビジネスプロセス名※1
ビジネスプロセスのバージョン CSCMsgCustomAdapterConstant.ContextType.BP_VERSION enum java.lang.String 汎用カスタムアダプタの呼び出し元のビジネスプロセスのバージョン※1
サービス呼出アクティビティ名 CSCMsgCustomAdapterConstant.ContextType.BP_INVOKEACTIVITY_NAME enum java.lang.String 汎用カスタムアダプタの呼び出し元のビジネスプロセスのサービス呼出アクティビティ名※1
汎用カスタムアダプタのサービス名 CSCMsgCustomAdapterConstant.ContextType.BP_INVOKEACTIVITY_CUSTOMADAPTERNAME enum java.lang.String サービス呼出アクティビティから呼び出される汎用カスタムアダプタのサービス名※1
オペレーション名 CSCMsgCustomAdapterConstant.ContextType.BP_INVOKEACTIVITY_OPERATIONNAME enum java.lang.String サービス呼出アクティビティのオペレーション名※1※2
プロセスインスタンスID CSCMsgCustomAdapterConstant.ContextType.BP_PROCESSINSTANCEID enum java.lang.String プロセスインスタンスID※1
HCSCサーバ名 CSCMsgCustomAdapterConstant.ContextType.SERVERNAME_HCSC enum java.lang.String HCSCサーバ名
クラスタ名 CSCMsgCustomAdapterConstant.ContextType.SERVERNAME_CLUSTER enum java.lang.String クラスタ名
J2EEサーバ名 CSCMsgCustomAdapterConstant.ContextType.SERVERNAME_J2EE enum java.lang.String J2EEサーバ名

注※1
ここで取得できる情報は該当の汎用カスタムアダプタを呼び出したビジネスプロセスの情報です。
BP1 → BP2 → 汎用カスタムアダプタのように,ビジネスプロセスからビジネスプロセスを呼び出す場合はBP1の情報は取得できません。

注※2
サービス呼出アクティビティから呼び出される汎用カスタムアダプタに複数のオペレーションが定義されている場合は,そのリクエスト処理で呼び出されるオペレーションだけ取得できます。

形式
 
public Map getMessageContext();
 
パラメタ
なし。
例外
なし。
戻り値
java.util.Map

 

●getMessageTypeメソッド
説明
要求メッセージに格納されている電文の種別を取得します。
形式
 
public int getMessageType();
 
パラメタ
なし。
例外
なし。
戻り値
要求メッセージに格納されている電文の種別を返却します。返却される値については,「付録B.1(3)(a) CSCMsgMessageConstantインターフェース」を参照してください。ただし,任意形式の汎用カスタムアダプタを作成した場合は,電文の種別に関係なく,「MESSAGE_TYPE_ANY」を返却します。

 

●getOperationNameメソッド
説明
サービス部品呼び出し時に呼び出すオペレーションの名称を取得します。
形式
 
public String getOperationName();
 
パラメタ
なし。
例外
なし。
戻り値
呼び出すオペレーションの名称を返却します。

 

●getXMLDocumentメソッド
説明
XML形式の電文を取得します。
形式
 
public org.w3c.dom.Document getXMLDocument() 
  throws CSCMsgIllegalMessageTypeException,
         CSCMsgInvalidMessageException;
 
パラメタ
なし。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    電文の形式がXML形式ではありません。または,電文が格納されている状態です。電文の種別がバイナリ形式の場合は,このメソッドを使用して電文を取得することはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    格納されている電文が不正です。
戻り値
設定されている電文の種別がXML形式(MESSAGE_TYPE_XML)の場合,DOM形式のオブジェクトで応答を返します。
電文が格納されていない(MESSAGE_TYPE_NONE)場合,nullを返します。
注意事項
  • このメソッドで取得したXML電文(DOM)については,変更しても問題ありません。
  • このメソッドを実行したときに,オブジェクトのコピーを作成します。そのため,再度このメソッドを発行すると,変更前のオブジェクトを再取得することになるので注意してください。
  • 任意形式の汎用カスタムアダプタを作成した場合,このメソッドを実行するとエラー(KDEC03016-E)になり,電文を取得できません。この場合は,getBytesメソッドを使用してください。

 

●getXMLBytesメソッド
説明
XML形式の電文をバイト配列で取得します。
StAXなどを利用して電文を読み込む場合,このメソッドを利用することでメモリ使用量を削減できます。
形式
 
public byte[] getXMLBytes() 
  throws CSCMsgIllegalMessageTypeException,
         CSCMsgInvalidMessageException;
 
パラメタ
なし。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    電文の形式がXML形式ではありません。
    電文の種別がバイナリ形式の場合は,このメソッドを使用して電文を取得することはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    格納されている電文が不正です。
戻り値
設定されている電文の種別がXML形式(MESSAGE_TYPE_XML)の場合,バイト配列形式のオブジェクトで応答を返します。
電文が格納されていない(MESSAGE_TYPE_NONE)場合,nullを返します。
注意事項
  • このメソッドで取得したXML電文(バイト配列)については,変更しても問題ありません。
  • このメソッドを実行したときに,オブジェクトのコピーを作成します。そのため,再度このメソッドを発行すると,変更前のオブジェクトを再取得することになるので注意してください。
  • XML ProcessorのStAXを利用してXML電文を読み込む場合,次の点に注意してください。
    ・XMLバージョン1.1の電文を設定した場合,例外が発生します。
    ・ISO-10646-UCS-4エンコーディングを使用した場合,例外が発生します。
    ・XML文書に「:」で始まる要素名が含まれる場合,例外になりません。
    ・XML文書中の文字データの中に,CDATAセクション終了区切り子("]]>")が単独で含まれる場合,例外になりません。
    ・空要素の場合,開始タグと終了タグだけが出力されます。
     (例)<sample></sample>

 

(c) CSCMsgResponseMessageインターフェース

説明
サービス部品呼び出し結果(電文またはフォルト情報)を格納するためのメソッドを提供するインターフェースです。
CSCMsgResponseMessageのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。

形式
 
public interface CSCMsgResponseMessage
{
  public int getMessageType();
  public void setBytes(byte[] message)
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgMultipleMessageInsertionException,
                 CSCMsgInvalidMessageException;
  public void setFault(String faultCode, 
                       String faultString,
                       String faultActor, 
                       byte[] faultDetail)
          throws CSCMsgMultipleMessageInsertionException;
  public void setFault(String faultCode, 
                       String faultString,
                       String faultActor, 
                       org.w3c.dom.Document faultDetail)
          throws CSCMsgMultipleMessageInsertionException,
                 CSCMsgInvalidMessageException;
  public void setXMLDocument(org.w3c.dom.Document dom)
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgMultipleMessageInsertionException,
                 CSCMsgInvalidMessageException;
  public void setXMLBytes(byte[] byte)
          throws CSCMsgIllegalMessageTypeException,
                 CSCMsgMultipleMessageInsertionException,
                 CSCMsgInvalidMessageException;
}
 

メソッド
CSCMsgResponseMessageインターフェースのメソッドを次の表に示します。
メソッド名 説明
getMessageTypeメソッド 応答メッセージに格納する電文の種別を取得します。
setBytesメソッド 応答メッセージにバイナリ形式の電文を格納します。
setFaultメソッド(形式1) サービス部品を呼び出すときに発生したフォルト情報を格納します。
setFaultメソッド(形式2) サービス部品を呼び出すときに発生したフォルト情報を格納します。
setXMLDocumentメソッド 応答メッセージにXML形式の電文を格納します。
setXMLBytesメソッド 応答メッセージに,XML形式の電文をバイト配列で格納します。

 

●getMessageTypeメソッド
説明
応答メッセージに格納する電文の種別を取得します。
形式
 
public int getMessageType();
 
パラメタ
なし。
例外
なし。
戻り値
応答メッセージに格納する電文の種別を返却します。ただし,任意形式の汎用カスタムアダプタを作成した場合は,電文の種別に関係なく,「MESSAGE_TYPE_ANY」を返却します。
  • MESSAGE_TYPE_NONE:
    電文を格納しません。
  • MESSAGE_TYPE_XML:
    電文の種別がXML形式の電文を格納します。
  • MESSAGE_TYPE_BINARY:
    電文の種別がバイナリ形式の電文を格納します。

 

●setBytes メソッド
説明
応答メッセージにバイナリ形式の電文を格納します。
形式
 
public void setBytes(byte[] message)
        throws CSCMsgIllegalMessageTypeException,
               CSCMsgMultipleMessageInsertionException,
               CSCMsgInvalidMessageException;
 
パラメタ
message:
バイナリ形式の電文を指定します。
なお,バイナリ形式の電文を格納した場合は,電文の種別をバイナリ形式(MESSAGE_TYPE_BINARY)に設定し,長さ0のバイト列やnullを格納した場合は,電文を格納しない種別(MESSAGE_TYPE_NONE)に設定します。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    設定されている電文の種別がバイナリではありません。または電文が格納されていない状態ではありません。要求時の電文の形式がXMLの場合に,応答時の電文の形式をバイナリに変えることはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgMultipleMessageInsertionException:
    すでに電文またはフォルト情報が設定されています。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    指定したバイナリ形式に誤りがあります。
戻り値
なし。
注意事項
任意形式の汎用カスタムアダプタを作成した場合は,電文の形式に関係なく,このメソッドを使用してください。格納した電文の種別を任意形式(MESSAGE_TYPE_ANY)に設定します。長さ0のバイト列やnullを格納した場合でも,任意形式(MESSAGE_TYPE_ANY)に設定します。

 

●setFaultメソッド(形式1)
説明
サービス部品を呼び出したときに発生したフォルト情報を格納します。
faultDetailの内容をバイナリ形式で格納する場合に使用します。
なお,応答時の電文は存在しないため,電文を格納しない種別(MESSAGE_TYPE_NONE)を設定します。
形式
 
public void setFault(String faultCode, 
                     String faultString,
                     String faultActor, 
                     byte[] faultDetail)
        throws CSCMsgMultipleMessageInsertionException;
 
パラメタ
  • faultCode:
    FaultCode情報を指定します。
    nullを指定した場合,"Server.ServiceExecutionError"が格納されます。
  • faultString:
    FaultString情報を指定します。
    nullを指定した場合,"Service Excution Error at CustomAdapter"が格納されます。
  • faultActor:
    FaultActor情報を指定します。
    nullを指定した場合,HCSC-Definerで設定したサービスIDが格納されます。
  • faultDetail:
    XML形式のDetail情報をバイト配列で指定します。
    長さ0のバイト列を指定した場合,そのまま長さ0のバイト列が格納されます。nullを指定した場合,そのままnullが格納されます。
例外
jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgMultipleMessageInsertionException:
すでに応答電文またはフォルト情報が設定されています。
戻り値
なし。
注意事項
  • faultDetailは,XML文書をバイナリ化したものです。必ず,先頭にXML宣言をしてください。宣言をしなかった場合は,エラーにはなりませんが,正常に動作しないおそれがあります。
  • XML文書をバイト配列に変換する場合は,文字コードとしてUTF-8を使用してください。指定した文字コード以外では,正常に動作しないおそれがあります。

 

●setFaultメソッド(形式2)
説明
サービス部品を呼び出したときに発生したフォルト情報を格納します。
faultDetailの内容をXML形式(DOM形式)で格納する場合に使用します。
なお,応答時の電文は存在しないため,電文を格納しない種別(MESSAGE_TYPE_NONE)を設定します。
形式
 
public void setFault(String faultCode, 
                     String faultString,
                     String faultActor, 
                     org.w3c.dom.Document faultDetail)
        throws CSCMsgMultipleMessageInsertionException,
               CSCMsgInvalidMessageException;
 
パラメタ
  • faultCode:
    FaultCode情報を指定します。
    nullを指定した場合,"Server.ServiceExecutionError"が格納されます。
  • faultString:
    FaultString情報を指定します。
    nullを指定した場合,"Service Excution Error at CustomAdapter"が格納されます。
  • faultActor:
    FaultActor情報を指定します。
    nullを指定した場合,HCSC-Definerで設定したサービスIDが格納されます。
  • faultDetail:
    Detail情報をDOM形式で指定します。
    nullを指定した場合,そのままnullが格納されます。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgMultipleMessageInsertionException:
    すでに応答電文またはフォルト情報が設定されています。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    指定したDOM形式に誤りがあります。
戻り値
なし。

 

●setXMLDocument メソッド
説明
応答メッセージにXML形式(DOM形式)の電文を格納します。
形式
 
public void setXMLDocument(org.w3c.dom.Document dom)
        throws CSCMsgIllegalMessageTypeException,
               CSCMsgMultipleMessageInsertionException,
               CSCMsgInvalidMessageException;
 
パラメタ
dom:
DOM形式の電文を指定します。
なお,XML形式の電文を格納した場合は,電文の種別をXML(MESSAGE_TYPE_XML)に設定し,nullを格納した場合は,電文を格納しない種別(MESSAGE_TYPE_NONE)に設定します。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    設定されている電文の種別がXMLではありません。または電文が格納されていない状態ではありません。要求時の電文の形式がXMLの場合に,応答時の電文の形式をバイナリに変えることはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgMultipleMessageInsertionException:
    すでに電文またはフォルト情報が設定されています。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    指定したDOM形式に誤りがあります。
戻り値
なし。
注意事項
任意形式の汎用カスタムアダプタを作成した場合,このメソッドを実行するとエラー(KDEC03016-E)になり,電文を格納できません。この場合は,setBytesメソッドを使用してください。

 

●setXMLBytes メソッド
説明
応答メッセージに,XML形式(バイト配列)の電文を格納します。
汎用カスタムアダプタでXML形式の電文をバイト配列で扱っていた場合,DOM形式に変換する必要がないため,このメソッドを利用することでメモリ使用量を削減できます。
形式
 
public void setXMLBytes(byte[] byte)
        throws CSCMsgIllegalMessageTypeException,
               CSCMsgMultipleMessageInsertionException,
               CSCMsgInvalidMessageException;
 
パラメタ
byte:
バイト配列の電文を指定します。
なお,byteがnullではない場合は,電文の種別をXML(MESSAGE_TYPE_XML)に設定し,nullである場合は,電文を格納しない種別(MESSAGE_TYPE_NONE)に設定します。
例外
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgIllegalMessageTypeException:
    要求電文の種別がXMLではありません。要求電文の種別がバイナリの場合に,応答電文の種別をXMLに変えることはできません。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgMultipleMessageInsertionException:
    すでに電文またはフォルト情報が設定されています。
  • jp.co.Hitachi.soft.csc.msg.adapter.custom.CSCMsgInvalidMessageException:
    指定したXML形式に誤りがあります。
戻り値
なし。
注意事項
  • 電文の作成時にStAXを使用する場合,次の点に注意してください。
    ・XMLバージョン1.1の電文を設定した場合,例外が発生します。
    ・ISO-10646-UCS-4エンコーディングを使用した場合,例外が発生します。
    ・XML文書に「:」で始まる要素名が含まれる場合,例外になりません。
    ・XML文書中の文字データの中に,CDATAセクション終了区切り子("]]>")が単独で含まれる場合,例外になりません。
    ・空要素の場合,開始タグと終了タグだけが出力されます。
     (例)<sample></sample>
(d) CSCMsgCustomAdapterConstantクラス

説明
CSCMsgRequestMessageインターフェースのgetMessageContextメソッドで取得できる,ビジネスプロセス情報を格納したMapのキーを定義するインターフェースです。
CSCMsgCustomAdapterConstantのパッケージ名は,jp.co.Hitachi.soft.csc.msg.adapter.customです。

形式
 
public interface CSCMsgCustomAdapterConstant {
  public enum ContextType {
           BP_DEFINITION_NAME,
           BP_VERSION,
           BP_INVOKEACTIVITY_NAME,
           BP_INVOKEACTIVITY_CUSTOMADAPTERNAME,
           BP_INVOKEACTIVITY_OPERATIONNAME,
           BP_PROCESSINSTANCEID,
           SERVERNAME_HCSC,
           SERVERNAME_CLUSTER,
           SERVERNAME_J2EE;
  }
}
 

Enum定数
BP_DEFINITION_NAME:
汎用カスタムアダプタの呼び出し元のビジネスプロセス名
BP_VERSION:
汎用カスタムアダプタの呼び出し元のビジネスプロセスのバージョン
BP_INVOKEACTIVITY_NAME:
汎用カスタムアダプタの呼び出し元のビジネスプロセスのサービス呼出アクティビティ名
BP_INVOKEACTIVITY_CUSTOMADAPTERNAME:
サービス呼出アクティビティから呼び出される汎用カスタムアダプタのサービス名
BP_INVOKEACTIVITY_OPERATIONNAME:
サービス呼出アクティビティのオペレーション名
BP_PROCESSINSTANCEID:
プロセスインスタンスID
SERVERNAME_HCSC:
HCSCサーバ名
SERVERNAME_CLUSTER:
クラスタ名
SERVERNAME_J2EE:
J2EEサーバ名

(4) 例外クラス

プロトコルコンバータの開発時に発生する例外クラスの一覧を次の表に示します。

表B-3 プロトコルコンバータの例外クラス一覧

クラス名 説明
CSCMsgCustomAdapterExceptionクラス 汎用カスタムアダプタの初期化処理やサービス部品を呼び出す処理で例外が発生した場合に送出する例外です。
CSCMsgIllegalMessageTypeExceptionクラス 電文の取得または格納時に,電文タイプと異なるタイプの電文形式のメソッドが呼ばれた場合に送出する例外です。
CSCMsgMultipleMessageInsertionExceptionクラス すでに電文またはフォルト情報が格納されれた場合に送出する例外です。
電文またはフォルト情報を格納したあとに,再び電文またはフォルト情報を設定することはできません。
CSCMsgInvalidMessageException クラス 要求電文の場合,格納さてている電文の種別(形式)が不正なときに送出する例外です。
応答電文の場合,不正な形式の電文種別を指定しているときに送出する例外です。
CSCMsgResourceAccessException クラス リソースアクセス処理中にエラーが発生した場合に送出する例外です。
次のどちらかの場合に発生します。
  • 取得しようとしたリソースがない場合
  • 入出力例外(java.io.IOException)が発生した場合