Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド

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

6.9.1 検証内容

ビジネスプロセスの検証では,次の内容を検証します。

検証中にエラーが100件を超えた場合,検証途中でも検証が中止されます。この場合は,作成したビジネスプロセスを見直してください。

ビジネスプロセスの検証ではエラーにならなくても,ビジネスプロセスを実行したときに初めてエラーとなる場合があります。このような場合,ログを採取し,ログに出力されたメッセージに従って対処します。

なお,ビジネスプロセスの検証は,基本的に定義情報だけの検証であり,ビジネスプロセスの実行時にエラーが発生しないことを保証するものではありません。よって,運用する前に十分なテストを行ってください。

<この項の構成>
(1) 必須項目の検証
(2) 定義されたビジネスプロセスが構造化されているかの検証
(3) そのほかの検証
(4) 呼出サービス部品の検証
(5) Javaの検証
(6) 検証できない内容

(1) 必須項目の検証

ビジネスプロセス定義画面に記述したビジネスプロセスの各アクティビティに,必須の項目が定義されているかどうかが検証されます。また,任意の項目は,設定されている場合は検証されます。必須項目の検証内容と対処を次の表に示します。

表6-18 必須項目の検証内容と対処

項番 検証内容 エラーになった場合の対処
1 ビジネスプロセス名の長さが,64バイト以内か。 次のどちらかの方法で対処します。
  • ビジネスプロセス名を64バイト以下に変更。
  • 使用する文字コードを変更。
2 変数・相関セット一覧ダイアログで定義した変数名の長さが,64バイト以内か。 次のどちらかの方法で対処します。
  • 変数名を64バイト以下に変更。
  • 使用する文字コードを変更。
3 変数・相関セット一覧ダイアログで定義した変数の型がメッセージ型の場合,変数に対応する電文フォーマットが設定されているか。 変数・相関セット一覧ダイアログで,メッセージ型の変数に対応する電文フォーマットを設定します。
4 変数・相関セット一覧ダイアログで定義した変数の部分名が設定されているか。 変数・相関セット一覧ダイアログで,変数の部分名を設定します。
5 変数・相関セット一覧ダイアログで定義した変数の部分名に,指定式が設定されているか。 変数・相関セット一覧ダイアログで,変数の部分名に指定式を設定します。
6 変数・相関セット一覧ダイアログで定義した変数の部分名に,型が設定されているか。 変数・相関セット一覧ダイアログで,変数の部分名に型を設定します。
7 変数・相関セット一覧ダイアログで定義した相関セット名の長さの長さが64バイト以内か。 次のどちらかの方法で対処します。
  • 相関セット名を64バイト以下に変更。
  • 使用する文字コードを変更。
8 変数・相関セット一覧ダイアログで定義した相関セットに,部分名が一つ以上設定されているか。 変数・相関セット一覧ダイアログで,相関セットに,部分名を一つ以上設定します。
9 変数・相関セット一覧ダイアログで定義した相関セットに,利用変数名が設定されているか。 変数・相関セット一覧ダイアログで,相関セットに利用変数を設定します。
10 変数・相関セット一覧ダイアログで定義した相関セットに,有効な変数名が設定されているか。 変数・相関セット一覧ダイアログで,有効な変数名を設定します。
11 変数・相関セット一覧ダイアログで定義した相関セットで指定されている変数に,基本型の部分があるか。 変数・相関セット一覧ダイアログで,基本型の部分を持つ変数を設定します。
12 変数・相関セット一覧ダイアログで定義した相関セットに,部分名が設定されているか。 変数・相関セット一覧ダイアログで,相関セットに部分名を設定します。
13 変数・相関セット一覧ダイアログで定義した相関セットに,有効な部分名が設定されているか。 変数・相関セット一覧ダイアログで,有効な部分名を設定します。
14 アクティビティのフォルト処理で,有効な変数が設定されているか。 フォルト処理の割当ダイアログで,有効な変数を設定します。
15 アクティビティのフォルト処理で,遷移先が設定されているか。 フォルト処理の割当ダイアログで,遷移先を設定します。
16 アクティビティのフォルト処理で,割当変数が設定されているか。 フォルト処理の割当ダイアログで,割当変数を設定します。
17 アクティビティのフォルト処理で,遷移先が設定されているか。 フォルト処理の割当ダイアログで,遷移先を設定します。
18 受付アクティビティで,オペレーション名が設定されているか。 受付アクティビティで,オペレーション名を設定します。
19 アクティビティ名の長さが64バイト以内か。 次のどちらかの方法で対処します。
  • アクティビティ名を64バイト以下に変更。
  • 使用する文字コードを変更。
20 受付アクティビティで,有効なヘッダ割当変数が設定されているか。 受付アクティビティで,有効なヘッダ割当変数を設定します。
21 受付アクティビティで,有効なルート要素および名前空間が設定されているか。 受付アクティビティで,有効なルート要素および名前空間を設定します。
22 受付アクティビティで,有効なボディ割当変数が設定されているか。 受付アクティビティで,有効なボディ割当変数を設定します。
23 受付アクティビティで,有効な割当相関セットが設定されているか。 受付アクティビティで,有効な相関セットを設定します。
24 リンクコネクションで,リンク名が指定されているか。 リンクコネクションに,リンク名を設定します。
25 リンクコネクションで,リンク先の遷移条件が「あり」に設定されている場合に,XPathが設定されているか。 リンクコネクションについて,次のどちらかの方法で対処します。
  • 遷移条件を設定。
  • 遷移条件に「なし」を選択。
26 応答アクティビティで,オペレーション名が設定されているか。 応答アクティビティで,オペレーション名を設定します。
27 応答アクティビティで,有効なヘッダ割当変数が設定されているか。 応答アクティビティで,有効なヘッダ割当変数を設定します。
28 応答アクティビティで,有効なルート要素および名前空間が設定されているか。 応答アクティビティで,有効なルート要素および名前空間を設定します。
29 応答アクティビティで,有効なボディ割当変数が設定されているか。 応答アクティビティで,有効なボディ割当変数を設定します。
30 応答アクティビティで,有効な割当相関セットが設定されているか。 応答アクティビティで,有効な相関セットを設定します。
31 応答アクティビティで,ボディ割当変数が指定されているか。 応答アクティビティで,ボディ割当変数を設定します。
32 サービス呼出アクティビティで,呼び出すサービス名が設定されているか。 サービス呼出アクティビティで,呼び出すサービス名を設定します。
33 サービス呼出アクティビティで,有効な要求電文用のヘッダ割当変数が設定されているか。 サービス呼出アクティビティで,有効な要求電文用のヘッダ割当変数を設定します。
34 サービス呼出アクティビティで,有効な要求電文用のルート要素および名前空間が設定されているか。 サービス呼出アクティビティで,有効な要求電文用のルート要素および名前空間を設定します。
35 サービス呼出アクティビティで,有効な応答電文用のヘッダ割当変数が設定されているか。 サービス呼出アクティビティで,有効な応答電文用のヘッダ割当変数を設定します。
36 サービス呼出アクティビティで,有効な応答電文用のルート要素および名前空間が設定されているか。 サービス呼出アクティビティで,有効な応答電文用のルート要素および名前空間を設定します。
37 サービス呼出アクティビティで,有効な要求電文用のボディ割当変数が設定されているか。 サービス呼出アクティビティで,有効な要求電文用のボディ割当変数を設定します。
38 サービス呼出アクティビティで,有効な応答電文用のボディ割当変数が設定されているか。 サービス呼出アクティビティで,有効な応答電文用のボディ割当変数を設定します。
39 サービス呼出アクティビティで,同期呼び出しの場合に,応答電文用のボディ割当変数が設定されているか。 サービス呼出アクティビティで,同期呼び出しの場合,応答電文用のボディ割当変数を設定します。
40 サービス呼出アクティビティで,有効な相関セットが設定されているか。 サービス呼出アクティビティで,有効な相関セットを設定します。
41 代入アクティビティで,一つ以上の代入操作が設定されているか。 代入アクティビティで,一つ以上の代入操作を設定します。
42 代入アクティビティで,コピー元が設定されているか。 代入アクティビティで,コピー元を設定します。
43 代入アクティビティで,コピー先が設定されているか。 代入アクティビティで,コピー先を設定します。
44 代入アクティビティで,有効なコピー元変数が設定されているか。 代入アクティビティで,有効なコピー元変数を設定します。
45 代入アクティビティで,コピー元に有効な部分名が設定されているか。 代入アクティビティで,コピー元に有効な部分名を設定します。
46 データ変換アクティビティで,変換元変数が設定されているか。 データ変換アクティビティで,変換元変数を設定します。
47 データ変換アクティビティで,有効な変換元変数が設定されているか。 データ変換アクティビティで,有効な変換元変数を設定します。
48 データ変換アクティビティで,データ変換定義が設定されているか。 データ変換アクティビティで,データ変換定義を設定します。
49 データ変換アクティビティのデータ変換定義が正しいか。 検証で出力されたメッセージを参考にして,正しい定義に修正します。
50 代入アクティビティで,コピー元のタイプとして,変数と式のどちらかが選択されているか。 代入アクティビティで,コピー元のタイプとして,変数と式のどちらかを設定します。
51 代入アクティビティで,コピー元の変数が選択されている場合,変数名が設定されているか。 代入アクティビティで,コピー元の変数を設定します。
52 代入アクティビティで,コピー元の式が選択されている場合,式が設定されているか。 代入アクティビティで,コピー元の式を設定します。
53 代入アクティビティで,コピー先の変数名が設定されている場合,有効な変数が設定されているか。 代入アクティビティで,有効なコピー先変数を設定します。
54 データ変換アクティビティで,有効な変換先変数が設定されているか。 データ変換アクティビティで,有効な変換先変数を設定します。
55 代入アクティビティで,コピー先に有効な部分名が設定されているか。 代入アクティビティで,コピー先に有効な部分名を設定します。
56 代入アクティビティのコピー先,またはデータ変換アクティビティの変換先のどちらかで,変数が設定されているか。 次のどちらかの方法で対処します。
  • 代入アクティビティで,コピー先の変数を設定します。
  • データ変換アクティビティで,変換先の変数を設定します。
57 並列処理開始アクティビティで,設定するリンク名の長さが64バイト以内か。 並列処理開始アクティビティで,定義されている,リンク名を次のどちらかの方法で対処します。
  • リンク名を64バイト以下に変更。
  • 使用する文字コードを変更。
58 分岐アクティビティで,分岐条件を一つ以上設定しているか。 分岐アクティビティで,一つ以上の分岐条件を設定します。
59 分岐アクティビティで,条件分岐またはデフォルトに割り当てられていない遷移先があるか。 分岐アクティビティで,遷移先を条件分岐またはデフォルトに割り当てます。
60 分岐アクティビティで,条件名が設定されているか。 分岐アクティビティで,分岐の条件名を設定します。
61 分岐アクティビティで,条件が設定されているか。 分岐アクティビティで,分岐の条件を設定します。
62 繰り返しアクティビティで,繰り返し条件が設定されているか。 繰り返しアクティビティで,繰り返し条件を設定します。
63 Java呼出アクティビティで,Javaクラス名が設定されているか。 Java呼出アクティビティで,Javaクラス名を設定します。
64 Java呼出アクティビティで,有効な引数用割当変数が設定されているか。 Java呼出アクティビティで,有効な引数用割当変数を設定します。
65 Java呼出アクティビティで,有効な戻り値用割当変数が設定されているか。 Java呼出アクティビティで,有効な戻り値用割当変数を設定します。
66 フォルト送出アクティビティで,有効な割当変数が設定されているか。 フォルト送出アクティビティで,有効な割当変数を設定します。
67 待機アクティビティで,待機時間が設定されているか。 待機アクティビティで,待機時間を設定します。
68 HCSCTEプロジェクトのlibディレクトリにディレクトリがないか。 HCSCTEプロジェクトのlibディレクトリからディレクトリを取り除きます。
69 HCSCTEプロジェクトのlibディレクトリに次の名前のファイルがないか。
  • csbdef.jar
  • cscbp_ejb.jar
  • csbjava.jar
ファイルを削除するか,ファイル名を変更し,HCSCTEプロジェクトのlibディレクトリに左記のファイルが含まれないようにします。
70 検証アクティビティで,検証する変数が設定されているか。 検証アクティビティで,検証する変数を設定します。
71 検証アクティビティで,検証する変数に有効な変数名が設定されているか。 検証アクティビティで,検証する変数に有効な変数名を設定します。

(2) 定義されたビジネスプロセスが構造化されているかの検証

ビジネスプロセスが,コネクションを使用して構造化されているかどうかが検証されます。

検証でエラーになった場合,エラーとなったコネクションの元のコネクションもエラーとみなされます。

例えば,次の図のように,コネクションEがなかった場合は,分岐アクティビティや並列アクティビティなどに正常なコネクションが含まれていても,分岐アクティビティを元とするコネクション,並列アクティビティを元とするコネクション,および開始アクティビティを元とするコネクションすべてがエラーとみなされます。ただし,処理Dがフォルト送出アクティビティの場合,コネクションEは設定できないためエラーにはなりません。

図6-16 コネクションの例

[図データ]

定義されたビジネスプロセスの構造化の検証内容と対処を次の表に示します。

表6-19 定義されたビジネスプロセスの構造化の検証内容と対処

項番 分類 検証内容 エラーになった場合の対処
1 次の接続先 遷移元が開始アクティビティの場合,次の接続先があるか。 開始アクティビティを先頭にして,接続移先のアクティビティを設定します。
2 遷移元が並列処理開始アクティビティの場合,次の接続先があるか。 並列処理開始アクティビティ,およびリンクコネクションで,接続するアクティビティを設定します。
3 遷移元が分岐開始アクティビティの場合,次の接続先があるか。 分岐開始アクティビティで,接続するアクティビティを設定します。
4 遷移元が上記以外のアクティビティの場合,次の接続先があるか。 遷移元のアクティビティに接続するアクティビティを設定します。
5 並列処理 並列処理が分岐終了アクティビティに接続していないか。 並列処理,対応する並列処理終了アクティビティに接続します。
6 次に示すコネクションが,並列処理終了アクティビティに接続していないか。
  • 開始アクティビティを元とするコネクション
  • あるアクティビティのあるフォルト処理の開始点を元とするコネクション
次のどちらかの方法で対処します。
  • 並列処理終了アクティビティを削除。
  • 並列処理終了アクティビティを,別のアクティビティに変更。
7 並列処理開始アクティビティからつながる並列処理終了アクティビティが複数ないか。 並列処理開始アクティビティを,対応する一つの並列処理終了アクティビティに接続します。
8 並列処理終了アクティビティが,対応する並列処理以外からのコネクションも受け付けていないか。 対応する並列処理を並列処理終了アクティビティに接続します。
9 並列処理が終了アクティビティに接続していないか。 並列処理を並列処理終了アクティビティに接続します。
10 並列処理開始アクティビティから直接,並列処理終了アクティビティに接続していないか。 並列処理開始アクティビティと,対応する並列処理終了アクティビティの間には,一つ以上のアクティビティを設定します。
11 分岐処理 分岐処理が並列処理終了アクティビティに接続していないか。 分岐処理を対応する分岐終了アクティビティに接続します。
12 次に示すコネクションが,分岐処理終了アクティビティに接続していないか。
  • 開始アクティビティを元とするコネクション
  • あるアクティビティのあるフォルト処理の開始点を元とするコネクション
次のどちらかの方法で対処します。
  • 分岐終了アクティビティを削除。
  • 分岐終了アクティビティを,別のアクティビティに変更。
13 分岐開始アクティビティからつながる分岐終了アクティビティが複数ないか。 分岐開始アクティビティを,対応する一つの分岐終了アクティビティに接続します。
14 分岐終了アクティビティが,対応する分岐処理以外からのコネクションも受け付けていないか。 対応する分岐処理を分岐終了アクティビティに接続します。
15 分岐処理が終了アクティビティに接続していないか。 分岐処理を分岐終了アクティビティに接続します。
16 分岐開始アクティビティから直接,分岐終了アクティビティに接続していないか。 分岐アクティビティと,対応する分岐終了アクティビティの間には,一つ以上のアクティビティを設定します。
17 フォルト処理 あるアクティビティのあるフォルト処理の開始点を元とするコネクションを処理中に,終了となっていないか。 フォルト処理の接続先から,終了アクティビティを削除します。

注※
アクティビティを元とするコネクション,およびあるアクティビティのあるフォルト処理の開始点を元とするコネクションについては,「図6-16 コネクションの例」を参照してください。

(3) そのほかの検証

そのほかに次の表に示す内容が検証されます。

表6-20 そのほかの検証内容と対処

項番 分類 検証内容 エラーになった場合の対処
1 ビジネスプロセス共通 ビジネスプロセスの最初に実行される基本アクティビティが,インスタンスを生成する受付アクティビティであるか。 開始アクティビティの次に,インスタンスを生成する受付アクティビティを接続します。
2 リンクコネクションに有効なリンク名が設定されているか。 リンク元の並列処理開始アクティビティで,リンク名を設定します。
3 代入アクティビティのコピー元とコピー先の変数の型が等しいか。 代入アクティビティで,コピー先とコピー元の変数の型を同じに設定します。
4 同一のオペレーション名を持つ応答アクティビティの変数の型が同一か。 同一のオペレーション名を持つ応答アクティビティで,同じ割当変数名を設定します。
5 同一オペレーションの応答アクティビティのフォルト名に対応付けられている変数が一つか。

(正しくない例)
  • フォルト名faultAに変数variableXとvariableYの二つが対応している場合

(正しい例)
  • フォルト名faultAに変数variableX,フォルト名faultBに変数variableYが対応している場合
  • フォルト名faultAに変数variableX,フォルト名faultBに変数variableXが対応している場合
フォルト処理の割当ダイアログで,同一オペレーションの応答アクティビティのフォルト名に対応する割当変数を一つに設定します。
6 循環するリンクコネクションが設定されていないか。 リンクコネクションが循環しないように設定します。
7 フォルト処理外からフォルト処理内へのリンクコネクションが張られていないか。 フォルト処理からフォルト処理内へのリンクコネクションを削除するよう設定します。
8 リンク名が複数回利用されていないか。 リンクコネクションで,リンク名がビジネスプロセス内で一意になるよう変更します。
9 同期の受付アクティビティのオペレーションに対応する応答アクティビティがあるか。 同期の受付アクティビティのオペレーションに対応する応答アクティビティを作成します。
10 応答アクティビティのオペレーションに対応する,同期の受付アクティビティがあるか。 次のどちらかの方法で対処します。
  • 応答アクティビティのオペレーションに対応する同期の受付アクティビティを作成します。
  • 応答アクティビティのオペレーション名を変更します。
11 インスタンスを生成するすべての受付アクティビティで,使用されている相関セットが同じか。 インスタンスを生成するすべての受付アクティビティで,使用する相関セットが同じになるように設定します。
12 インスタンスを生成する受付アクティビティがあるか。 次のどちらかの方法で対処します。
  • 受付アクティビティで,インスタンス生成を「yes」に変更します。
  • インスタンスを生成する受付アクティビティを作成します。
13 ビジネスプロセスの開始点からコネクションを追っても到達できないアクティビティがあるか。 次のどちらかの方法で対処します。
  • 到達できないアクティビティを削除します。
  • 到達できるようにコネクションを設定します。
14 フォルト送出アクティビティから送出されたフォルト変数が,上位のスコープのフォルト処理でキャッチされるか。 次のどちらかの方法で対処します。
  • フォルト処理に適切な割当変数を設定します。
  • フォルト処理に割当変数として「catch-all」を設定します。
15 永続化しないビジネスプロセスの場合 永続化しないビジネスプロセスで,応答アクティビティのあとに実行されるアクティビティがないか。 応答アクティビティのあとにある実行されるアクティビティを削除します。
16 永続化しないビジネスプロセスに,非同期の受付アクティビティや非同期のサービス呼出アクティビティがないか。 次のどちらかの方法で対処します。
  • 非同期の受付アクティビティや非同期のサービス呼出アクティビティを同期に変更します。
  • 非同期の受付アクティビティや非同期のサービス呼出アクティビティを削除します。
17 永続化しないビジネスプロセスに,待機アクティビティがないか。 待機アクティビティを削除します。

「表6-20 そのほかの検証内容と対処」に示した検証の対象となるリンクの状態を次の図に示します。

図6-17 検証の対象となるリンクの状態

[図データ]

 

(4) 呼出サービス部品の検証

サービス呼出アクティビティに割り当てられているサービス部品のサービス名およびオペレーション名について検証されます。

呼出サービス部品の検証内容と対処を次の表に示します。

表6-21 呼出サービス部品の検証内容と対処

項番 検証内容 エラーになった場合の対処
1 サービス呼出アクティビティに割り当てられているサービス名がリポジトリ内に実在するか。 サービス呼出アクティビティに,リポジトリ内に実在するサービス名を割り当ててください。
2 サービス呼出アクティビティに割り当てられているサービス名がリポジトリ内に実在する場合,アクティビティに割り当てられているオペレーション名が呼出先サービス部品に存在するか。 サービス呼出アクティビティに,リポジトリ内に実在するオペレーション名を割り当ててください。
3 サービス呼出アクティビティに割り当てられているサービス名およびオペレーション名がリポジトリ内に実在する場合,アクティビティに設定されている通信モデルが呼出先のサービス部品およびオペレーションの通信モデルと一致するかどうか。 サービス呼出アクティビティで,適切なサービス部品およびオペレーションを選択し直してください。

(5) Javaの検証

Java呼出アクティビティで設定されているJavaクラスについて検証されます。

Javaの検証内容と対処を次の表に示します。

表6-22 Javaの検証内容と対処

項番 検証内容 エラーになった場合の対処
1 Java呼出アクティビティの「Javaクラス名」に指定されているクラスが,HCSCTEプロジェクトのclassesディレクトリ内に存在するか。 次のどちらかの対処を実施してください。
  • 「Javaエディタ起動」からJavaクラスを作成します。
  • Java呼出アクティビティにHCSCTEプロジェクトのclassesディレクトリ内に存在するクラスを指定します。
2 Java呼出アクティビティで指定されているクラスで,コンパイルエラーが検出されていないか。 Java呼出アクティビティで指定されているクラスのコンパイルエラーを解消するか,コンパイルエラーが発生しないクラスを指定してください。

注※
Java呼出アクティビティで指定されているクラスだけが検証の対象です。そのクラスから参照しているほかのクラスは検証の対象外です。

(6) 検証できない内容

ビジネスプロセスの検証ではエラーにならなくても,ビジネスプロセスを実行したときに初めてエラーとなる場合があります。このような場合,ログを採取し,ログに出力されたメッセージに従って対処します。ログの出力先については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 保守/移行/互換編」の「4.3 アプリケーションサーバのログ(J2EEアプリケーションを実行するシステム)」を参照してください。

ビジネスプロセスの検証でエラーにならないが,ビジネスプロセスを実行したときにエラーになる例を次に示します。