Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編
ビジネスプロセスの検証では,次の内容を検証します。
検証中にエラーが100件を超えた場合,検証途中でも検証が中止されます。この場合は,作成したビジネスプロセスを見直してください。
ビジネスプロセスの検証ではエラーにならなくても,ビジネスプロセスを実行したときに初めてエラーとなる場合があります。このような場合,ログを採取し,ログに出力されたメッセージに従って対処します。
なお,ビジネスプロセスの検証は,基本的に定義情報だけの検証であり,ビジネスプロセスの実行時にエラーが発生しないことを保証するものではありません。よって,運用する前に十分なテストを行ってください。
ビジネスプロセス定義画面に記述したビジネスプロセスの各アクティビティに,設定項目が正しく定義されているかどうかが検証されます。
表5-18 設定項目の検証内容と対処
項番 | 検証内容 | エラーになった場合の対処 |
---|---|---|
1 | ビジネスプロセス名の長さが,64バイト以内か。 | 次のどちらかの方法で対処します。
|
2 | 変数・相関セット一覧ダイアログで定義した変数名の長さが,64バイト以内か。 | 次のどちらかの方法で対処します。
|
3 | 変数・相関セット一覧ダイアログで定義した変数の型がメッセージ型の場合,変数に対応する電文フォーマットが設定されているか。 | 変数・相関セット一覧ダイアログで,メッセージ型の変数に対応する電文フォーマットを設定します。 |
4 | 変数・相関セット一覧ダイアログで定義した変数の部分名が設定されているか。 | 変数・相関セット一覧ダイアログで,変数の部分名を設定します。 |
5 | 変数・相関セット一覧ダイアログで定義した変数の部分名に,指定式が設定されているか。 | 変数・相関セット一覧ダイアログで,変数の部分名に指定式を設定します。 |
6 | 変数・相関セット一覧ダイアログで定義した変数の部分名に,型が設定されているか。 | 変数・相関セット一覧ダイアログで,変数の部分名に型を設定します。 |
7 | 変数・相関セット一覧ダイアログで定義した相関セット名の長さの長さが64バイト以内か。 | 次のどちらかの方法で対処します。
|
8 | 変数・相関セット一覧ダイアログで定義した相関セットに,部分名が1つ以上設定されているか。 | 変数・相関セット一覧ダイアログで,相関セットに,部分名を1つ以上設定します。 |
9 | 変数・相関セット一覧ダイアログで定義した相関セットに,利用変数名が設定されているか。 | 変数・相関セット一覧ダイアログで,相関セットに利用変数を設定します。 |
10 | 変数・相関セット一覧ダイアログで定義した相関セットに,有効な変数名が設定されているか。 | 変数・相関セット一覧ダイアログで,有効な変数名を設定します。 |
11 | 変数・相関セット一覧ダイアログで定義した相関セットで指定されている変数に,基本型の部分があるか。 | 変数・相関セット一覧ダイアログで,基本型の部分を持つ変数を設定します。 |
12 | 変数・相関セット一覧ダイアログで定義した相関セットに,部分名が設定されているか。 | 変数・相関セット一覧ダイアログで,相関セットに部分名を設定します。 |
13 | 変数・相関セット一覧ダイアログで定義した相関セットに,有効な部分名が設定されているか。 | 変数・相関セット一覧ダイアログで,有効な部分名を設定します。 |
14 | アクティビティのフォルト処理で,有効な変数が設定されているか。 | フォルト処理の割当ダイアログで,有効な変数を設定します。 |
15 | アクティビティのフォルト処理で,遷移先が設定されているか。 | フォルト処理の割当ダイアログで,遷移先を設定します。 |
16 | アクティビティのフォルト処理で,割当変数が設定されているか。 | フォルト処理の割当ダイアログで,割当変数を設定します。 |
17 | アクティビティのフォルト処理で,遷移先が設定されているか。 | フォルト処理の割当ダイアログで,遷移先を設定します。 |
18 | 受付アクティビティで,オペレーション名が設定されているか。 | 受付アクティビティで,オペレーション名を設定します。 |
19 | アクティビティ名の長さが64バイト以内か。 | 次のどちらかの方法で対処します。
|
20 | 受付アクティビティで,有効なヘッダ割当変数が設定されているか。 | 受付アクティビティで,有効なヘッダ割当変数を設定します。 |
21 | 受付アクティビティで,有効なルート要素および名前空間が設定されているか。 | 受付アクティビティで,有効なルート要素および名前空間を設定します。 |
22 | 受付アクティビティで,有効なボディ割当変数が設定されているか。 | 受付アクティビティで,有効なボディ割当変数を設定します。 |
23 | 受付アクティビティで,有効な割当相関セットが設定されているか。 | 受付アクティビティで,有効な相関セットを設定します。 |
24 | リンクコネクションで,リンク名が指定されているか。 | リンクコネクションに,リンク名を設定します。 |
25 | リンクコネクションで,リンク先の遷移条件が「あり」に設定されている場合に,XPathが設定されているか。 | リンクコネクションについて,次のどちらかの方法で対処します。
|
26 | 応答アクティビティで,オペレーション名が設定されているか。 | 応答アクティビティで,オペレーション名を設定します。 |
27 | 応答アクティビティで,有効なヘッダ割当変数が設定されているか。 | 応答アクティビティで,有効なヘッダ割当変数を設定します。 |
28 | 応答アクティビティで,有効なルート要素および名前空間が設定されているか。 | 応答アクティビティで,有効なルート要素および名前空間を設定します。 |
29 | 応答アクティビティで,有効なボディ割当変数が設定されているか。 | 応答アクティビティで,有効なボディ割当変数を設定します。 |
30 | 応答アクティビティで,有効な割当相関セットが設定されているか。 | 応答アクティビティで,有効な相関セットを設定します。 |
31 | 応答アクティビティで,ボディ割当変数が指定されているか。 | 応答アクティビティで,ボディ割当変数を設定します。 |
32 | サービス呼出アクティビティで,呼び出すサービス名が設定されているか。 | サービス呼出アクティビティで,呼び出すサービス名を設定します。 |
33 | サービス呼出アクティビティで,有効な要求電文用のヘッダ割当変数が設定されているか。 | サービス呼出アクティビティで,有効な要求電文用のヘッダ割当変数を設定します。 |
34 | サービス呼出アクティビティで,有効な要求電文用のルート要素および名前空間が設定されているか。 | サービス呼出アクティビティで,有効な要求電文用のルート要素および名前空間を設定します。 |
35 | サービス呼出アクティビティで,有効な応答電文用のヘッダ割当変数が設定されているか。 | サービス呼出アクティビティで,有効な応答電文用のヘッダ割当変数を設定します。 |
36 | サービス呼出アクティビティで,有効な応答電文用のルート要素および名前空間が設定されているか。 | サービス呼出アクティビティで,有効な応答電文用のルート要素および名前空間を設定します。 |
37 | サービス呼出アクティビティで,有効な要求電文用のボディ割当変数が設定されているか。 | サービス呼出アクティビティで,有効な要求電文用のボディ割当変数を設定します。 |
38 | サービス呼出アクティビティで,有効な応答電文用のボディ割当変数が設定されているか。 | サービス呼出アクティビティで,有効な応答電文用のボディ割当変数を設定します。 |
39 | サービス呼出アクティビティで,同期呼び出しの場合に,応答電文用のボディ割当変数が設定されているか。 | サービス呼出アクティビティで,同期呼び出しの場合,応答電文用のボディ割当変数を設定します。 |
40 | サービス呼出アクティビティで,有効な相関セットが設定されているか。 | サービス呼出アクティビティで,有効な相関セットを設定します。 |
41 | 代入アクティビティで,1つ以上の代入操作が設定されているか。 | 代入アクティビティで,1つ以上の代入操作を設定します。 |
42 | 代入アクティビティで,コピー元が設定されているか。 | 代入アクティビティで,コピー元を設定します。 |
43 | 代入アクティビティで,コピー先が設定されているか。 | 代入アクティビティで,コピー先を設定します。 |
44 | 代入アクティビティで,有効なコピー元変数が設定されているか。 | 代入アクティビティで,有効なコピー元変数を設定します。 |
45 | 代入アクティビティで,コピー元に有効な部分名が設定されているか。 | 代入アクティビティで,コピー元に有効な部分名を設定します。 |
46 | データ変換アクティビティで,変換元変数が設定されているか。 | データ変換アクティビティで,変換元変数を設定します。 |
47 | データ変換アクティビティで,有効な変換元変数が設定されているか。 | データ変換アクティビティで,有効な変換元変数を設定します。 |
48 | データ変換アクティビティで,データ変換定義が設定されているか。 | データ変換アクティビティで,データ変換定義を設定します。 |
49 | データ変換アクティビティのデータ変換定義が正しいか。 | 検証で出力されたメッセージを参考にして,正しい定義に修正します。 |
50 | 代入アクティビティで,コピー元のタイプとして,変数と式のどちらかが選択されているか。 | 代入アクティビティで,コピー元のタイプとして,変数と式のどちらかを設定します。 |
51 | 代入アクティビティで,コピー元の変数が選択されている場合,変数名が設定されているか。 | 代入アクティビティで,コピー元の変数を設定します。 |
52 | 代入アクティビティで,コピー元の式が選択されている場合,式が設定されているか。 | 代入アクティビティで,コピー元の式を設定します。 |
53 | 代入アクティビティで,コピー先の変数名が設定されている場合,有効な変数が設定されているか。 | 代入アクティビティで,有効なコピー先変数を設定します。 |
54 | データ変換アクティビティで,有効な変換先変数が設定されているか。 | データ変換アクティビティで,有効な変換先変数を設定します。 |
55 | 代入アクティビティで,コピー先に有効な部分名が設定されているか。 | 代入アクティビティで,コピー先に有効な部分名を設定します。 |
56 | 代入アクティビティのコピー先,またはデータ変換アクティビティの変換先のどちらかで,変数が設定されているか。 | 次のどちらかの方法で対処します。
|
57 | 並列処理開始アクティビティで,設定するリンク名の長さが64バイト以内か。 | 並列処理開始アクティビティで,定義されている,リンク名を次のどちらかの方法で対処します。
|
58 | 分岐アクティビティで,分岐条件を1つ以上設定しているか。 | 分岐アクティビティで,1つ以上の分岐条件を設定します。 |
59 | 分岐アクティビティで,条件分岐またはデフォルトに割り当てられていない遷移先があるか。 | 分岐アクティビティで,遷移先を条件分岐またはデフォルトに割り当てます。 |
60 | 分岐アクティビティで,条件名が設定されているか。 | 分岐アクティビティで,分岐の条件名を設定します。 |
61 | 分岐アクティビティで,条件が設定されているか。 | 分岐アクティビティで,分岐の条件を設定します。 |
62 | 繰り返しアクティビティで,繰り返し条件が設定されているか(条件指定方式の場合だけ)。 | 繰り返しアクティビティで,繰り返し条件を設定します。 |
63 | 繰り返しアクティビティで,繰り返しリストが指定されているか(リスト指定方式の場合だけ)。 | 繰り返しアクティビティで,繰り返しリストを指定します。 |
64 | 繰り返しアクティビティで,繰り返し要素変数が設定されているか(リスト指定方式の場合だけ)。 | 繰り返しアクティビティで,繰り返し要素変数を設定します。 |
65 | 繰り返しアクティビティで,繰り返し要素変数に有効な変数名が設定されているか(リスト指定方式の場合だけ)。 | 繰り返しアクティビティで,有効な繰り返し要素変数を設定します。 |
66 | Java呼出アクティビティで,Javaクラス名が設定されているか。 | Java呼出アクティビティで,Javaクラス名を設定します。 |
67 | Java呼出アクティビティで,有効な引数用割当変数が設定されているか。 | Java呼出アクティビティで,有効な引数用割当変数を設定します。 |
68 | Java呼出アクティビティで,有効な戻り値用割当変数が設定されているか。 | Java呼出アクティビティで,有効な戻り値用割当変数を設定します。 |
69 | フォルト送出アクティビティで,有効な割当変数が設定されているか。 | フォルト送出アクティビティで,有効な割当変数を設定します。 |
70 | 待機アクティビティで,待機時間が設定されているか。 | 待機アクティビティで,待機時間を設定します。 |
71 | HCSCTEプロジェクトのlibディレクトリにディレクトリがないか。 | HCSCTEプロジェクトのlibディレクトリからディレクトリを取り除きます。 |
72 | HCSCTEプロジェクトのlibディレクトリに次の名前のファイルがないか。
|
ファイルを削除するか,ファイル名を変更し,HCSCTEプロジェクトのlibディレクトリに左記のファイルが含まれないようにします。 |
73 | 検証アクティビティで,検証する変数が設定されているか。※ | 検証アクティビティで,検証する変数を設定します。 |
74 | 検証アクティビティで,検証する変数に有効な変数名が設定されているか。 | 検証アクティビティで,検証する変数に有効な変数名を設定します。 |
ビジネスプロセスが,コネクションを使用して構造化されているかどうかが検証されます。
検証でエラーになった場合,エラーとなったコネクションの元のコネクションもエラーとみなされます。
例えば,次の図のように,コネクションEがなかった場合は,分岐アクティビティや並列アクティビティなどに正常なコネクションが含まれていても,分岐アクティビティを元とするコネクション,並列アクティビティを元とするコネクション,および開始アクティビティを元とするコネクションすべてがエラーとみなされます。ただし,処理Dがフォルト送出アクティビティの場合,コネクションEは設定できないためエラーにはなりません。
図5-26 コネクションの例
定義されたビジネスプロセスの構造化の検証内容と対処を次の表に示します。
表5-19 定義されたビジネスプロセスの構造化の検証内容と対処
項番 | 分類 | 検証内容 | エラーになった場合の対処 |
---|---|---|---|
1 | 次の接続先 | 遷移元が開始アクティビティの場合,次の接続先があるか。 | 開始アクティビティを先頭にして,接続移先のアクティビティを設定します。 |
2 | 遷移元が並列処理開始アクティビティの場合,次の接続先があるか。 | 並列処理開始アクティビティ,およびリンクコネクションで,接続するアクティビティを設定します。 | |
3 | 遷移元が分岐開始アクティビティの場合,次の接続先があるか。 | 分岐開始アクティビティで,接続するアクティビティを設定します。 | |
4 | 遷移元が上記以外のアクティビティの場合,次の接続先があるか。 | 遷移元のアクティビティに接続するアクティビティを設定します。 | |
5 | 並列処理 | 並列処理が分岐終了アクティビティに接続していないか。 | 並列処理,対応する並列処理終了アクティビティに接続します。 |
6 | 次に示すコネクションが,並列処理終了アクティビティに接続していないか。
|
次のどちらかの方法で対処します。
|
|
7 | 並列処理開始アクティビティからつながる並列処理終了アクティビティが複数ないか。 | 並列処理開始アクティビティを,対応する1つの並列処理終了アクティビティに接続します。 | |
8 | 並列処理終了アクティビティが,対応する並列処理以外からのコネクションも受け付けていないか。 | 対応する並列処理を並列処理終了アクティビティに接続します。 | |
9 | 並列処理が終了アクティビティに接続していないか。 | 並列処理を並列処理終了アクティビティに接続します。 | |
10 | 並列処理開始アクティビティから直接,並列処理終了アクティビティに接続していないか。 | 並列処理開始アクティビティと,対応する並列処理終了アクティビティの間には,1つ以上のアクティビティを設定します。 | |
11 | 分岐処理 | 分岐処理が並列処理終了アクティビティに接続していないか。 | 分岐処理を対応する分岐終了アクティビティに接続します。 |
12 | 次に示すコネクションが,分岐処理終了アクティビティに接続していないか。
|
次のどちらかの方法で対処します。
|
|
13 | 分岐開始アクティビティからつながる分岐終了アクティビティが複数ないか。 | 分岐開始アクティビティを,対応する1つの分岐終了アクティビティに接続します。 | |
14 | 分岐終了アクティビティが,対応する分岐処理以外からのコネクションも受け付けていないか。 | 対応する分岐処理を分岐終了アクティビティに接続します。 | |
15 | 分岐処理が終了アクティビティに接続していないか。 | 分岐処理を分岐終了アクティビティに接続します。 | |
16 | 分岐開始アクティビティから直接,分岐終了アクティビティに接続していないか。 | 分岐アクティビティと,対応する分岐終了アクティビティの間には,1つ以上のアクティビティを設定します。 | |
17 | フォルト処理 | あるアクティビティのあるフォルト処理の開始点を元とするコネクションを処理中に,終了となっていないか。 | フォルト処理の接続先から,終了アクティビティを削除します。 |
そのほかに次の表に示す内容が検証されます。
表5-20 そのほかの検証内容と対処
項番 | 分類 | 検証内容 | エラーになった場合の対処 |
---|---|---|---|
1 | ビジネスプロセス共通 | ビジネスプロセスの最初に実行される基本アクティビティが,インスタンスを生成する受付アクティビティであるか。 | 開始アクティビティの次に,インスタンスを生成する受付アクティビティを接続します。 |
2 | リンクコネクションに有効なリンク名が設定されているか。 | リンク元の並列処理開始アクティビティで,リンク名を設定します。 | |
3 | 代入アクティビティのコピー元とコピー先の変数の型が等しいか。 | 代入アクティビティで,コピー先とコピー元の変数の型を同じに設定します。 | |
4 | 複数の受付アクティビティで同一のオペレーション名が使用されていないか。 | 各受付アクティビティでオペレーション名が一意になるように設定します。 | |
5 | 同一のオペレーション名を持つ応答アクティビティの変数の型が同一か。 | 同一のオペレーション名を持つ応答アクティビティで,同じ割当変数名を設定します。 | |
6 | 同一オペレーションの応答アクティビティのフォルト名に対応付けられている変数が1つか。
|
フォルト処理の割当ダイアログで,同一オペレーションの応答アクティビティのフォルト名に対応する割当変数を1つに設定します。 | |
7 | 循環するリンクコネクションが設定されていないか。 | リンクコネクションが循環しないように設定します。 | |
8 | フォルト処理外からフォルト処理内へのリンクコネクションが張られていないか。 | フォルト処理からフォルト処理内へのリンクコネクションを削除するよう設定します。 | |
9 | リンク名が複数回利用されていないか。 | リンクコネクションで,リンク名がビジネスプロセス内で一意になるよう変更します。 | |
10 | 同期の受付アクティビティのオペレーションに対応する応答アクティビティがあるか。 | 同期の受付アクティビティのオペレーションに対応する応答アクティビティを作成します。 | |
11 | 応答アクティビティのオペレーションに対応する,同期の受付アクティビティがあるか。 | 次のどちらかの方法で対処します。
|
|
12 | インスタンスを生成するすべての受付アクティビティで,使用されている相関セットが同じか。 | インスタンスを生成するすべての受付アクティビティで,使用する相関セットが同じになるように設定します。 | |
13 | インスタンスを生成する受付アクティビティがあるか。 | 次のどちらかの方法で対処します。
|
|
14 | ビジネスプロセスの開始点からコネクションを追っても到達できないアクティビティがあるか。 | 次のどちらかの方法で対処します。
|
|
15 | フォルト送出アクティビティから送出されたフォルト変数が,上位のスコープのフォルト処理でキャッチされるか。 | 次のどちらかの方法で対処します。
|
|
16 | 複数の並列処理開始アクティビティで同一のリンク名が定義されていないか。 | ビジネスプロセス内で一意になるようにリンク名を設定します。 | |
17 | 変数の部分が次の条件を満たしているか。
|
検証内容に示す条件をすべて満たすように変数の部分を設定します。 | |
18 | [このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ内に,不正なアクティビティを定義していないか。 | [このスコープの開始時と終了時のみコミットする]ラジオボタンを選択したスコープアクティビティ内に定義された次のアクティビティを削除します。
|
|
19 | 永続化するビジネスプロセスの場合 | 永続化するビジネスプロセスで,リスト指定方式の繰り返しアクティビティがないか。 | 永続化するビジネスプロセスではリスト指定方式の繰り返しアクティビティを設定できません。 |
20 | 永続化しないビジネスプロセスの場合 | 永続化しないビジネスプロセスで,受付アクティビティが1個だけか。 | ビジネスプロセス全体の受付アクティビティを調べ,2個以上ある場合は削除します。 |
21 | 永続化しないビジネスプロセスに,非同期のサービス呼出アクティビティがないか。 | 次のどちらかの方法で対処します。
|
|
22 | 永続化しないビジネスプロセスに,待機アクティビティがないか。 | 待機アクティビティを削除します。 |
表に示した検証の対象となるリンクの状態を次の図に示します。
図5-27 検証の対象となるリンクの状態
サービス呼出アクティビティに割り当てられているサービス部品のサービス名およびオペレーション名について検証されます。
呼出サービス部品の検証内容と対処を次の表に示します。
表5-21 呼出サービス部品の検証内容と対処
項番 | 検証内容 | エラーになった場合の対処 |
---|---|---|
1 | サービス呼出アクティビティに割り当てられているサービス名がリポジトリ内に実在するか。 | サービス呼出アクティビティに,リポジトリ内に実在するサービス名を割り当ててください。 |
2 | サービス呼出アクティビティに割り当てられているサービス名がリポジトリ内に実在する場合,アクティビティに割り当てられているオペレーション名が呼出先サービス部品に存在するか。 | サービス呼出アクティビティに,リポジトリ内に実在するオペレーション名を割り当ててください。 |
3 | サービス呼出アクティビティに割り当てられているサービス名およびオペレーション名がリポジトリ内に実在する場合,アクティビティに設定されている通信モデルが呼出先のサービス部品およびオペレーションの通信モデルと一致するかどうか。 | サービス呼出アクティビティで,適切なサービス部品およびオペレーションを選択し直してください。 |
Java呼出アクティビティで設定されているJavaクラスについて検証されます。
Javaの検証内容と対処を次の表に示します。
表5-22 Javaの検証内容と対処
項番 | 検証内容 | エラーになった場合の対処 |
---|---|---|
1 | Java呼出アクティビティの「Javaクラス名」に指定されているクラスが,次の個所に存在するか。※1
|
次のいずれかの対処を実施してください。
|
2 | Java呼出アクティビティの「Javaクラス名」に指定されているクラスが,次の個所に1つだけ存在するか。※1
|
同一のJavaクラスを1つだけにしてください。 |
3 | Java呼出アクティビティの「Javaクラス名」に指定されているクラスが,専用インターフェース(jp.co.Hitachi.soft.csc.bp.receiver.ejb.CustomClassInterfaceM,またはjp.co.Hitachi.soft.csc.bp.receiver.ejb.CustomClassInterface)を実装しているか。※1 | Java呼出アクティビティに設定するJavaクラスは,専用インターフェースを実装してください。 |
4 | 項番3の検証に必要なクラス,またはインターフェースが存在するか。※1 | 次のどちらかの対処を実施してください。
|
5 | Java呼出アクティビティの[引数用割当変数]に2個以上の変数が設定されていて,かつJava呼出アクティビティの[Javaクラス名]に指定されているクラスがjp.co.Hitachi.soft.csc.bp.receiver.ejb.CustomClassInterfaceMを実装しているか。 | Java呼出アクティビティに設定するJavaクラスは,jp.co.Hitachi.soft.csc.bp.receiver.ejb.CustomClassInterfaceMを実装してください。 |
6 | HCSCTEプロジェクトのsrcディレクトリに存在するJavaクラス※2で,コンパイルエラーが検出されていないか。 | Javaクラスのコンパイルエラーを解消してください。 ビルドパスにcscbp_ejb.jarがない場合は<インストールディレクトリ>\CSC\lib\cscbp_ejb.jarをビルドパスに追加してください。 |
ビジネスプロセスの検証ではエラーにならなくても,ビジネスプロセスを実行したときに初めてエラーとなる場合があります。このような場合,ログを採取し,ログに出力されたメッセージに従って対処します。ログの出力先については,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「4.3 アプリケーションサーバのログ(J2EEアプリケーションを実行するシステム)」を参照してください。
ビジネスプロセスの検証でエラーにならないが,ビジネスプロセスを実行したときにエラーになる例を次に示します。
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.