主要メッセージとフィールド
このセクションでは、 OrderBroker オーケストレーションと OrderManager オーケストレーションによって処理される主要なメッセージとフィールドについて簡単に説明します。 アプリケーション内のメッセージの完全な一覧については、「 ビジネス プロセス管理ソリューションのメッセージ リファレンス」を参照してください。
注文メッセージ
OrderBroker からの注文メッセージは、マルチパート メッセージです。 ルーティング情報を格納する部分と、注文情報を格納する部分があります。 ルーティング メッセージ部分のフィールドは、この部分を定義する .NET クラスにより、すべて識別フィールドになっています。これは、オーケストレーションがすべてのクラス メンバをメッセージのプロパティとしてアクセスできるようにするためです。 また、メッセージをルーティングすることができるように、ルーティング クラスには昇格フィールドが含められています。 これらの昇格フィールドも、プログラムの記述に使用し、簡単な表記で参照できるように、識別フィールドになっています。
.NET クラスを使用してメッセージを定義する方法の詳細については、「 ユーザー コードでのメッセージの構築」を参照してください。
注文の識別
このソリューションでは、ルーティング情報の 3 つのフィールドを使用して、注文を識別します。 これら 3 つのうち、注文識別子 (OrderID) と顧客識別子 (CustomerID) の 2 つが注文を識別します。 この 2 つのフィールドで注文を識別できますが、注文のインスタンスが複数存在することもあります。 たとえば、顧客が新しい標準ケーブルの設置を注文し、その後電話をかけ直して新しいデラックス ケーブルを設置するよう注文を変更したとします。 更新された注文が到着する前に元の注文が完了する可能性は少なく、 この結果、注文のインスタンスが 2 つ作成されることになります。
注文のインスタンスを区別するために、ソリューションでは一意の順序シーケンス番号 (SeqNum) を使用します。 OrderID、CustomerID、SeqNum の 3 つのフィールドは、注文のインスタンスを一意に識別します。
最後に、ソリューションでは SeqNum に対して増加する数を使用するため、ソリューションは更新を元の順序と区別できます。更新プログラムの SeqNum が大きくなります。
Note
このソリューションは、注文要求を作成するシステムに依存して、昇順の値を SeqNum に割り当てます。 入力 Web サービス CSRMainForm.aspx.cs の ASP ページの背後にあるコードと、要求を注文に変換するマップ (関連するフィールドの名前 については CSR_OrderRequest_To_Order.btm ) を参照してください。
Status
OrderBroker、OrderManager、およびそれらのサテライト オーケストレーションでは、注文メッセージ ルーティング 部分の 2 つのフィールドを使用して状態を追跡します。Status と Stage です。 [状態] フィールドは、注文の状態を追跡します。 次の表では、[ 状態] フィールドの値について説明します。
値 | 設定場所 | 説明 |
---|---|---|
ACCEPTED | OrderBroker | 注文を OrderManager に渡すことができます。 |
完了 | OrderManager | 注文全体の処理が正常に完了しました。 |
ERROR | OrderManager | 注文にエラーが検出されました。 |
ORDERMANAGER-EXCEPTION | OrderManager | 注文を処理中に、OrderManager に例外が発生しました。 |
STAGE_n_COMPLETED | OrderManager | ステージ n (n は番号) が正常に完了しました。 |
STARTED | OrderManager | 注文処理が開始されました。 |
TERMINATED | OrderManager | 注文処理が、キャンセルにより中止されました。 |
段階
OrderManager は、ルーティング パーツの [ステージ] フィールドを使用して、メッセージの処理ステージを示します。 このフィールドは、メッセージをどのサテライト オーケストレーションで処理するかを決定するフィルタで使用されます。 OrderManager は、最初に Stage を 1 に設定します。 注文が終了または完了すると、 OrderManager はStage をオーケストレーション変数 Stop の値に設定 します。
RequestType
OrderManager では、注文メッセージの RequestType フィールドも使用されます。 フィールドの値が TERMINATE の場合、注文は中止されます。 オーケストレーションは 、RequestType フィールドの他のすべての値を無視し、注文の更新と重複を認識するために注文シーケンス番号に依存します。 それ以外の場合、 OrderBroker は 、仕入先 または顧客サービス システムからのメッセージの [状態] フィールドの値に RequestType フィールドを設定します。
OrderTypeCode、OrderType、ServiceClass
注文の種類は、注文メッセージの OrderTypeCode フィールドにあります。 OrderBroker は、顧客サービス システムまたはベンダー システムからのメッセージの OrdTypeCode フィールドの値に値を設定します。 次の表に、 OrderTypeCode に指定できる値を示します。
値 | 説明 |
---|---|
NS | 新しい標準ケーブルの設置 |
ND | 新しいデラックス ケーブルの設置 |
XS | 標準ケーブルの設置をキャンセル |
XD | デラックス ケーブルの設置をキャンセル |
CS | 標準ケーブルの設置を変更 |
CD | デラックス ケーブルの設置を変更 |
UNKNOWN | 不明。 |
その後、 Validate オーケストレーションはビジネス ルール エンジンを使用して、これらの値を OrderType と ServiceClass という 2 つの異なるフィールドに変換します。 Validate オーケストレーションは、最初の注文処理ステージ CableOrder1 によって呼び出されます。
次の表に 、OrderType の値を示します。
OrderTypeCode の値 | OrderType の値 |
---|---|
NS、ND | アクティブ化 |
XS、XD | CANCEL |
CS、CD | CHANGE |
無効な組み合わせです。 | INVALID |
ServiceClass の値は、対応する 1 文字、標準の場合は S、デラックスの場合は D です。
その他の識別子
ソリューションでは、個別の各注文に対しても識別子を使用します。 この識別子 RequestId は、すべての注文で一意である必要があります。 入力 Web サービスでは、自動的にこの識別子に GUID が割り当てられます。 バッチ入力で送信するメッセージには、このフィールドの値を含めておく必要があります。 フィールドは、注文スキーマの RequestID です。 ただし、 OrderBroker では 、CSR_OrderRequest スキーマを使用して注文を処理します。 フィールドは、このスキーマでは ReqId として表示され、識別プロパティです。
ソリューションは RequestId を 使用して、BAM 追跡システムで使用されるアクティビティ識別子を形成します。
参照
プロセス マネージャーのロジック
プロセス マネージャーでの注文の流れ
ユーザー コードでのメッセージの構築
ビジネス プロセス管理ソリューションのメッセージ リファレンス