業務ロジックを作成し、アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成、または修正します。
サーバアプリケーションには、業務処理と任意の出口処理(初期処理、終了処理、前処理、後処理、エラー処理、トランザクション後メッセージ編集処理)を作成します。
C言語サーバアプリケーションの作成方法、および修正方法について説明します。
サーバアプリケーション作成時の注意事項については、“22.2 サーバアプリケーションを作成する場合の注意”を参照してください。
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成するためには、サーバアプリケーションの業務処理のインタフェースを、以下のように作成する必要があります。
関数の復帰値 任意の関数名( [ユーザ任意のパラメタ,] [const char * const userwork, int userworksize,] /* アプリケーション作業域 */ [int *rtn, apfwExcept *apfw_env] /* 処理結果情報/例外情報 */ ) |
■アプリケーション作業域
アプリケーション作業域は、初期処理で初期化された情報を共通に参照する領域です。領域はアプリケーション連携実行基盤で獲得されます。
アプリケーション情報入力ファイルでアプリケーション作業域を使用するように指定した場合に、使用します。アプリケーション情報入力ファイルの指定方法については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆アプリケーション作業域”を参照してください。
注意
アプリケーション作業域を使用する場合、あわせて運用時の設定として、アプリケーション連携実行基盤定義ファイルでアプリケーション作業域のサイズも指定する必要があります。
設定方法の詳細は、“Interstage Business Application Server セットアップガイド”の“アプリケーション連携実行基盤定義ファイルの作成”を参照してください。
■処理結果情報
処理結果情報は、アプリケーションの処理結果(アプリケーション連携実行基盤での動作指示情報)を表すパラメタです。
アプリケーション情報入力ファイルで、処理結果情報を使用するように指定した場合、または指定を省略した場合に使用します。アプリケーション情報入力ファイルの指定方法については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆処理結果情報”を参照してください。
サーバアプリケーションが正常(Commit)の情報だけを返却する場合には、インタフェースから省略できます。サーバアプリケーションのインタフェースから処理結果情報を省略する場合には、アプリケーション情報入力ファイルの<result_info>タグで、flag属性の値を“OFF”に設定してください。詳細は、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆処理結果情報”を参照してください。
注意
処理結果情報を省略した場合、サーバアプリケーションから、正常(Rollback)、異常または例外、およびリトライを返却することはできません。
処理結果情報のデータ型はint型です。以下の値を指定できます。
処理結果 | トランザクション情報 | 設定値 |
---|---|---|
正常 | Commit | APFW_RTN_COMMIT (0) |
正常 | Rollback | APFW_RTN_ROLLBACK (1) |
異常または例外 | Rollback | APFW_RTN_ERROR (2) |
リトライ | Rollback | APFW_RTN_RETRY (3) |
なお、処理結果情報に何も値を設定しないで復帰した場合、アプリケーション連携実行基盤では異常または例外(APFW_RTN_ERROR)が設定されたものとして処理が行われます。
■例外情報
例外情報は、アプリケーションの処理結果が異常または例外(APFW_RTN_ERROR)の場合に設定します。同期処理の場合は、呼出し元に例外情報が通知されます。
業務処理がC言語で作成されている場合には、例外情報は以下のデータ型(apfwExcept)を使用します。apfwExcept構造体の詳細については、“Interstage Business Application Server リファレンス”の“アプリケーションインタフェース(C言語)”を参照してください。
なお、サーバアプリケーションのインタフェースから処理結果情報を省略する場合には、例外情報も同時に省略されます。
typedef struct{ unsigned int arealen; unsigned int vallen; unsigned char *val; }apfwSequenceOctet; typedef struct{ int errcode; char *errmessage; apfwSequenceOctet errdata; }apfwExcept; |
注意
例外情報には、処理結果としてAPFW_RTN_ERROR、またはAPFW_RTN_RETRYを設定した場合に有効になります。それ以外の値を設定した場合には、例外情報として扱われません。
通知する情報として、errcode(エラーコード)、errmessage(エラーメッセージ)、およびerrdata(エラー詳細)を設定することができます。
errmessageに設定した値についてはコード変換が行われますが、errdataに設定した値についてはコード変換が行われません。
■ユーザ任意のパラメタ
ユーザ任意のパラメタは、パラメタの方向によって指定方法が異なります。以下に、サーバアプリケーションのパラメタ受渡しに使用するデータ型の指定方法を示します。
データ型 | IN | OUT | INOUT | 復帰値 |
---|---|---|---|---|
char* | char* | char** | char** | char* |
unsigned short* | unsigned short* | unsigned short** | unsigned short** | unsigned short* |
unsigned char | unsigned char | unsigned char* | unsigned char* | unsigned char |
short | short | short* | short* | short |
int | int | int* | int* | int |
long long | long long | long long* | long long* | long long |
float | float | float* | float* | float |
double | double | double* | double* | double |
構造体(注) | struct* | struct** | struct** | struct* |
配列(注) | Array* | array** | array** | array* |
バイナリ(注) | struct* | struct** | struct** | struct* |
注)パラメタの受渡しに使用するデータ型が構造体、配列、バイナリの場合、ユーザ定義型のデータ名を指定します。
ポイント
パラメタ値の省略について
データを設定するアドレスにNULLを設定することで、送受信するデータを省略することができます。以下のデータ型で使用できます。
文字列型(char*、unsigned short*)
構造体
配列
バイナリ
値を省略する場合の設定例を以下に示します。
【条件】
業務処理名:server_apl
使用するデータ型:以下の記述例の構造体
typedef struct str{ int mem1; char *mem2; } str; |
パラメタ:str型のOUT
パラメタ名:param_out
アプリケーション作業域:使用する
復帰値:void
【設定例】
void server_apl( str **param_out, const char * const userwork, int userworksize, int *rtn, apfwExcept *apfw_env ) { /* OUT情報設定 */ *param_out = NULL; /* 省略データ(NULL)設定 */ return; } |
サーバアプリケーション、および、初期処理、終了処理、前処理、後処理、エラー処理、トランザクション後メッセージ編集処理を作成する際には、以下のファイルをインクルードしてください
/opt/FJSVibs/include/apfwcom.h
/opt/FJSVibs/include/apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
[Interstageのインストールディレクトリ]\BAS\include\apfwcom.h
[Interstageのインストールディレクトリ]\BAS\include\apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
サーバアプリケーションを作成する際には、インタフェースに以下の値を指定します。
アプリケーション作業域(任意)
アプリケーション作業域長(任意)
処理結果情報(任意)
例外情報(任意)
これらのインタフェースはC言語実行基盤インタフェース生成ツールの実行時に自動的に付加されるため、IDLファイルに記述する必要はありません。なお、アプリケーション作業域、およびアプリケーション作業域長を指定する場合には、アプリケーション情報入力ファイルで、アプリケーション作業域を使用するように指定する必要があります。アプリケーション情報入力ファイルの詳細については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”を参照してください。
■メモリの獲得・解放について
使用する型によって、メモリの獲得および解放を意識する必要があります。
獲得および解放を意識する必要がある型は、以下のとおりです。
char*
unsigned short*
構造体
配列
バイナリ
以下に、パラメタの方向によるメモリの獲得および解放の基本的な考え方を示します。
IN/OUT | 獲得 | 解放 |
---|---|---|
IN | 実行基盤インタフェースが領域を獲得するため、ユーザアプリケーションは意識する必要はありません。 | 実行基盤インタフェースが領域を解放するため、ユーザアプリケーションは意識する必要はありません。 |
OUT | ユーザアプリケーションが領域を獲得する必要があります。 | 実行基盤インタフェースが領域を解放するため、ユーザアプリケーションは意識する必要はありません。 |
INOUT | IN OUT | 実行基盤インタフェースが領域を解放するため、ユーザアプリケーションは意識する必要はありません。 |
具体的な記述については、“13.6 文字列型、構造体、配列、バイナリ、例外処理について”を参照してください。
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、初期処理、および終了処理を作成します。
注意
初期処理、および終了処理を作成する際には、以下のファイルをインクルードしてください。
/opt/FJSVibs/include/apfwcom.h
/opt/FJSVibs/include/apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
[Interstageのインストールディレクトリ]\BAS\include\apfwcom.h
[Interstageのインストールディレクトリ]\BAS\include\apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
初期処理、および終了処理の処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。
また、初期処理と終了処理で作成した関数、およびライブラリは、システム構築シートを記入する際に入力する必要があります。詳細は、“Interstage Business Application Server セットアップガイド”の“同期アプリケーション連携実行基盤編”の“ワークユニット設定とアプリケーション情報の入力”を参照してください。
■初期処理
ワークユニット起動時に1つのプロセスについて1回だけ呼び出す処理です。1ワークユニット上に複数のサーバアプリケーションを配備する場合でも、1つだけ作成してください。
初期処理のインタフェースは、以下のように作成する必要があります。
void 任意の関数名( [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
初期処理はサーバアプリケーションとは別の定義で実行基盤インタフェースを作成する必要があります。以下の条件に従い初期処理用のIDLファイルとアプリケーション情報入力ファイルを作成してください。
[IDLファイル]
モジュール宣言、インタフェース宣言、オペレーション宣言のみ記述してください。
オペレーション宣言は、初期処理の関数名を記述してください。
オペレーション宣言には、引数、復帰値を記述しないでください。
[アプリケーション情報入力ファイル]
<server>タグおよび<server>タグに従属するタグのみ記述してください。
<server>に従属するタグのうち<target>タグ、<library>タグ、<comment>タグ、<userwork>タグ、<result_info>タグのみを記述してください。
Linuxを使用する場合の定義の記述例を以下に示します。
[初期処理]
初期処理関数名:INIT_server_apl
アプリケーション名:INIT_server_apl
ライブラリ名:libINIT_server_apl.so
コメントを使用しない
アプリケーション作業域を使用する
処理結果情報を使用する
module apfwmod{ interface apfwintf{ void INIT_server_apl(); }; }; |
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> <target name="INIT_server_apl"/> <library name="libINIT_server_apl.so"/> <userwork flag="ON"/> <result_info flag="ON"/> </server> </apfw-app> |
作成したIDLファイルとアプリケーション情報入力ファイルから、実行基盤インタフェースを作成してください。実行基盤インタフェースの作成方法は、“13.4.3 C言語実行基盤インタフェースの生成”を参照してください。
初期処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションと別のファイルに記述してください。
初期処理の記述例を以下に示します。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void INIT_server_apl( const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { /* アプリケーション作業域を初期化(任意) */ memset( (char*)userwork, 0x00, userworksize ); /* 初期処理を実施(任意) */ return; } |
■終了処理
ワークユニット終了時に1つのプロセスについて1回だけ呼び出す処理です。1ワークユニット上に複数のサーバアプリケーションを配備する場合でも、1つだけ作成してください。
終了処理のインタフェースは、以下のように作成する必要があります。
void 任意の関数名( [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
終了処理はサーバアプリケーションとは別の定義で実行基盤インタフェースを作成する必要があります。
以下の条件に従い終了処理用のIDLファイルとアプリケーション情報入力ファイルを作成してください。
[IDLファイル]
モジュール宣言、インタフェース宣言、およびオペレーション宣言だけを記述してください。
オペレーション宣言は、終了処理の関数名を記述してください。
オペレーション宣言には、引数、復帰値を記述しないでください。
[アプリケーション情報入力ファイル]
<server>タグおよび<server>タグに従属するタグだけを記述してください。
<server>に従属するタグのうち<target>タグ、<library>タグ、<comment>タグ、<userwork>タグ、<result_info>タグだけを記述してください。
Linuxを使用する場合の定義の記述例を以下に示します。
[終了処理]
終了処理関数名:TERM_server_apl
アプリケーション名:TERM_server_apl
ライブラリ名:libTERM_server_apl.so
コメントを使用しない
アプリケーション作業域を使用する
処理結果情報を使用する
module apfwmod{ interface apfwintf{ void TERM_server_apl(); }; }; |
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> <target name="TERM_server_apl"/> <library name="libTERM_server_apl.so"/> <userwork flag="ON"/> <result_info flag="ON"/> </server> </apfw-app> |
作成したIDLファイルとアプリケーション情報入力ファイルから、実行基盤インタフェースを作成してください。実行基盤インタフェースの作成方法は、“13.4.3 C言語実行基盤インタフェースの生成”を参照してください。
終了処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションとは別のファイルに記述してください。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void TERM_server_apl( const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { /* 終了処理を実施(任意)*/ return; } |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、前処理、および後処理を作成します。
前処理、および後処理は、アプリケーション情報入力ファイルでそれぞれの処理を使用するように指定した場合に、使用します。アプリケーション情報入力ファイルの指定方法については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆前処理、後処理、エラー処理、およびトランザクション後メッセージ編集処理”を参照してください。
注意
アプリケーション情報入力ファイルで、前処理、および後処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。
前処理、および後処理を作成する際には、以下のファイルをインクルードしてください。
/opt/FJSVibs/include/apfwcom.h
/opt/FJSVibs/include/apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
[Interstageのインストールディレクトリ]\BAS\include\apfwcom.h
[Interstageのインストールディレクトリ]\BAS\include\apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
それぞれの処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。
■前処理
アプリケーション連携実行基盤からの要求ごとに、業務処理の直前に呼び出す処理です。
前処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報が前処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。
void PRE_業務処理の関数名( [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
前処理を使用する場合には、サーバアプリケーションの実行基盤インタフェースを作成する際に、アプリケーション情報入力ファイルに以下の指定が必要になります。
[アプリケーション情報入力ファイル]
<pre>タグのflag属性に“ON”を指定
以下に定義の記述例を示します。
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> ・・・・・・ <pre flag="ON"/> ・・・・・・ </server> </apfw-app> |
前処理の記述例を以下に示します。
なお、前処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void PRE_server_apl( const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { /*前処理を実施(任意) */ return; } |
■後処理
アプリケーション連携実行基盤からの要求ごとに、業務処理の直後に呼び出す処理です。
後処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報が後処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。
void POST_業務処理の関数名( [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
後処理を使用する場合には、サーバアプリケーションの実行基盤インタフェースを作成する際に、アプリケーション情報入力ファイルに以下の指定が必要になります。
[アプリケーション情報入力ファイル]
<post>タグのflag属性に“ON”を指定
以下に定義の記述例を示します。
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> ・・・・・・ <post flag="ON"/> ・・・・・・ </server> </apfw-app> |
後処理の記述例を以下に示します。
なお、後処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void POST_server_apl( const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { /*後処理を実施(任意) */ return; } |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、エラー処理を作成します。
エラー処理は、アプリケーション情報入力ファイルで処理を使用するように指定した場合に、使用します。アプリケーション情報入力ファイルの指定方法については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆前処理、後処理、エラー処理、およびトランザクション後メッセージ編集処理”を参照してください。
注意
アプリケーション情報入力ファイルで、エラー処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。
エラー処理を作成する際には、以下のファイルをインクルードしてください。
/opt/FJSVibs/include/apfwcom.h
/opt/FJSVibs/include/apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
[Interstageのインストールディレクトリ]\BAS\include\apfwcom.h
[Interstageのインストールディレクトリ]\BAS\include\apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
エラー処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。
■エラー処理
前処理、業務処理、後処理が異常終了した場合に、その直後に呼び出される処理です。
異常終了とは、前処理、業務処理、後処理で、処理結果情報に正常(APFW_RTN_COMMIT、またはAPFW_RTN_ROLLBACK)以外の値を設定し、アプリケーション連携実行基盤に制御を返した状態を示します。
エラー処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報がエラー処理のインタフェースに必要であるかは、サーバアプリケーションの設定に従います。
void ERROR_業務処理の関数名( [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
エラー処理を使用する場合には、サーバアプリケーションの実行基盤インタフェースを作成する際に、アプリケーション情報入力ファイルに以下の指定が必要になります。
[アプリケーション情報入力ファイル]
<error>タグのflag属性に“ON”を指定
以下に定義の記述例を示します。
なお、エラー処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> ・・・・・・ <error flag="ON"/> ・・・・・・ </server> </apfw-app> |
エラー処理では、業務処理、前処理、および後処理で発生した例外情報をapfwExcept構造体に受け取ります。例外情報を更新したい場合には、処理結果情報に異常または例外(APFW_RTN_ERROR)を設定したうえで、apfwExcept構造体の設定情報を変更してください。
例外情報を更新しない場合には、処理結果情報に異常または例外(APFW_RTN_ERROR)を設定したうえで、apfwExcept構造体の設定情報を変更しないで復帰してください。
アプリケーション連携実行基盤に例外情報を返す必要がなくなった場合には、処理結果情報に正常(APFW_RTN_COMMIT、またはAPFW_RTN_ROLLBACK)を設定して復帰してください。
例外情報のエラーコードを判定して、例外情報を更新する場合のエラー処理の記述例を以下に示します。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void ERROR_server_apl( const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { int error_state; /* エラーに対するリカバリ処理を実施 */ error_state = 0; /* リカバリの状態を設定 */ switch( error_state ){ case 0: /* サーバアプリケーションを正常終了させる */ *rtn = APFW_RTN_COMMIT; /* 処理結果情報に正常(APFW_RTN_COMMIT)を設定 */ break; case 1: /* エラー情報を更新*/ /* 例外情報のエラーコードの値を更新 */ apfw_env->errcode = -9999; /* 例外情報のメッセージの値を更新 */ if( apfw_env->errmessage != NULL ){ apfw_c_free(apfw_env->errmessage ); } apfw_env->errmessage = apfw_c_alloc(14); if( apfw_env->errmessage == NULL ){ apfw_env->errcode = -1; *rtn = APFW_RTN_ERROR; /*処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ return; } strcpy(apfw_env->errmessage, "ERROR MESSAGE" ); *rtn = APFW_RTN_ERROR; /* 処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ break; default: /*エラー処理を更新しない*/ *rtn = APFW_RTN_ERROR; /* 処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ } return; } |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、トランザクション後メッセージ編集処理を作成します。
トランザクション後メッセージ編集処理は、アプリケーション情報入力ファイルで処理を使用するように指定した場合に、使用します。アプリケーション情報入力ファイルの指定方法については、“13.4.2 アプリケーション情報入力ファイルの作成・修正”の“◆前処理、後処理、エラー処理、およびトランザクション後メッセージ編集処理”を参照してください。
注意
アプリケーション情報入力ファイルで、トランザクション後メッセージ編集処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。
トランザクション後メッセージ編集処理を作成する際には、以下のファイルをインクルードしてください。
/opt/FJSVibs/include/apfwcom.h
/opt/FJSVibs/include/apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
[Interstageのインストールディレクトリ]\BAS\include\apfwcom.h
[Interstageのインストールディレクトリ]\BAS\include\apfw_cdr_lib.h
実行基盤インタフェース生成ツールが作成するC言語実行基盤インタフェース共通ヘッダファイル
トランザクション後メッセージ編集処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。
■トランザクション後メッセージ編集処理
同期アプリケーション連携実行基盤で管理しているトランザクションの完了後に呼び出される処理です。トランザクション完了の結果により、アプリケーション連携実行基盤に返却するメッセージを編集する場合に使用します。
トランザクション後メッセージ編集処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報がトランザクション後メッセージ編集処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。
void POSTTRN_業務処理の関数名( const apfwDBResult dbinf, [const char * const userwork, int userworksize,] [int *rtn, apfwExcept *apfw_env] ) |
トランザクション後メッセージ編集処理を使用する場合には、サーバアプリケーションの実行基盤インタフェースを作成する際に、アプリケーション情報入力ファイルに以下の指定が必要になります。
[アプリケーション情報入力ファイル]
<posttrn>タグのflag属性に“ON”を指定
以下に定義の記述例を示します。
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> ・・・・・・ <posttrn flag="ON"/> ・・・・・・ </server> </apfw-app> |
トランザクション後メッセージ編集処理では、業務処理、または初期処理、終了処理、前処理、後処理、トランザクション後メッセージ編集処理の処理結果情報を、apfwDBResult構造体、およびはapfwExcept構造体に受け取ります。例外情報を更新したい場合には、処理結果情報に異常または例外(APFW_RTN_ERROR)を設定したうえで、apfwExcept構造体の設定情報を変更してください。例外情報を設定する必要がない場合には、処理結果情報に正常(APFW_RTN_COMMIT、またはAPFW_RTN_ROLLBACK)を設定してください。
トランザクション後メッセージ編集処理の記述例を以下に示します。
なお、トランザクション後メッセージ編集処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ void POSTTRN_server_apl( const apfwDBResult dbinf, /* DB情報 */ const char * const userwork, /* アプリケーション作業域 */ int userworksize, /* アプリケーション作業域の長さ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { /*トランザクション後メッセージ編集処理を実施(任意)*/ return; } |