9.2. オーケストレーションダイアグラムの作成


  1. File New Other を選択します。
  2. Selection ウィザードから JBoss jBPM Process Definition を選択します。
  3. プロセス定義を保存します。混乱を避けるために、プロセス定義ごとに個別のディレクトリーを使用します。
  4. jBPM 統合開発環境 のメニューパレットから Process Design ビューへの "drag-and-drop" 項目を開始します。設計モードとソースモードを切り替えて、追加時に XML 要素を確認できます。
  5. インテグレーションに必要な XML フラグメントを追加します。
  6. オーダープロセスダイアグラムをビルドする前に、3 つのサービスを作成およびテストします。これらは通常のグローバルなサービスであり、jboss-esb.xml ファイルで定義されます。サービス名とカテゴリーを使用した設定例を以下に示します。
    <services>
      <service category="BPM_orchestration4_Starter_Service" 
      name="Starter_Service"
      description="BPM Orchestration Sample 4: Use this service to start a 
    process instance">
    			<!-- .... -->						
      </service>
      <service category="BPM_Orchestration4" name="IntakeService"
      description="IntakeService: transforms, massages, calculates priority">
    			<!-- .... -->
      </service>		
      <service category="BPM_Orchestration4" name="DiscountService"
        description="DiscountService">					
      </service>		
      <service category="BPM_Orchestration4" name="ShippingService"
        description="ShippingService">			
    			<!-- .... -->
      </service>		 	
    </services>
    
  7. EsbActionHandler または EsbNotifier アクションハンドラーのいずれかを使用してこれらのサービスを参照します。( JBoss Business Process Manager が応答を期待する場合は EsbActionHandler を選択し、何も必要ない場合は EsbNotifier を選択します。)
  8. ためのサービスが認識されているので、Start state ノードをデザインビューにドラッグします。新しいプロセスインスタンスはこのノードで開始されます。
  9. ノードにドラッグし、Intake Order に名前を付けます。
  10. メニューから Transition を選択し、各ノードをクリックして、Start ノードおよび Intake Order ノードを接続します。それらに接続する矢印が表示されます。最初の Intake Order を参照します。
  11. Intake Node に Service および Category 名を追加します。Source ビューを選択します。Intake Order ノードのソースコードを確認できます。以下のようになります。
    <node name="Intake Order">
    	<transition name="" to="Review Order"></transition>
    </node>
    
  12. EsbActionHandler クラス参照を追加し、続いてサービスカテゴリーと名前、BPM_Orchestration4、および IntakeService のサブ要素設定を追加します。以下のようになります。
    <node name="Intake Order">
    	<action name="esbAction" class=
    		"org.jboss.soa.esb.services.jbpm.actionhandlers.EsbActionHandler">
    			<esbCategoryName>BPM_Orchestration4</esbCategoryName>
    			<esbServiceName>IntakeService</esbServiceName>
    			<!-- async call of IntakeService -->
    	</action>
    <transition name="" to="Review Order"></transition>
    </node>
    
  13. 以下のコードを使用して、サービス呼び出しとともに JBoss Business Process Manager コンテキスト変数を送信します。(以下の例では、 entireOrderAsXML という名前の変数がメッセージ本文のデフォルト位置に設定される)があります。
    			
    <bpmToEsbVars>
    	<mapping bpm="entireOrderAsXML" esb="BODY_CONTENT" />
    </bpmToEsbVars>
    
    これにより、 entireOrderAsXML 変数の XML ベースの内容がメッセージの本文で終了します。これで、IntakeService は、パイプラインの各アクションを通過させることにより、メッセージにアクセスし、処理できるようになりました。最後のアクションに達すると、 replyTo プロパティーが確認され、メッセージは JBpmCallBack サービスに送信されます。
    これにより、JBoss Business Process Manager にコールバックし、Intake Order ノードから次のノードへの移行(この場合は 順の確認 の 確認)に通知します。
  14. 次に、メッセージからノードにいくつかの変数を送信します。両方のコンテキストがオブジェクトのクラスをロードできる限り、オブジェクト全体を送信できます。JBoss Business Process Manager にマップバックする機能を維持するには、 esbToEsbVars 要素を追加します。
    <node name="Intake Order">
    <action name="esbAction" class=
    "org.jboss.soa.esb.services.jbpm.actionhandlers.EsbActionHandler">
    <esbCategoryName>BPM_Orchestration4</esbCategoryName>
    <esbServiceName>IntakeService</esbServiceName>
    <bpmToEsbVars>
    <mapping bpm="entireOrderAsXML" esb="BODY_CONTENT" />
    </bpmToEsbVars>
    <esbToBpmVars>
    <mapping esb="body.entireOrderAsXML" bpm="entireOrderAsXML"/>
    <mapping esb="body.orderHeader" bpm="entireOrderAsObject" />
    <mapping esb="body.customer" bpm="entireCustomerAsObject" />
    <mapping esb="body.order_orderId" bpm="order_orderid" />
    <mapping esb="body.order_totalAmount" bpm="order_totalamount" />
    <mapping esb="body.order_orderPriority" bpm="order_priority" />
    <mapping esb="body.customer_firstName" bpm="customer_firstName" />
    <mapping esb="body.customer_lastName" bpm="customer_lastName" />
    <mapping esb="body.customer_status" bpm="customer_status" />
    </esbToBpmVars>
    </action>
    <transition name="" to="Review Order"></transition>
    </node>
    
    このサービスが返されると、以下の変数が JBoss Business Process Manager のコンテキストに保存されます。
    • entireOrderAsXML
    • entireOrderAsObject
    • entireCustomerAsObject
    また、デモの目的では、フラット化された変数もあります。
    • order_orderid
    • order_totalAmount
    • order_priority
    • customer_firstName
    • customer_lastName
    • customer_status
  15. オーダープロセスを手動で確認する必要があります。Order Review という タスクでタスクノード を追加します。これらのジョブは、列車を持つ誰かが実行する必要があります。 actor_iduser
    XML フラグメントは以下のようになります。
    <task-node name="Review Order">
    <task name="Order Review">
    <assignment actor-id="user"></assignment>
    <controller>
    <variable name="customer_firstName"
    access="read,write,required"></variable>
    <variable name="customer_lastName" access="read,write,required">
    <variable name="customer_status" access="read"></variable>
    <variable name="order_totalamount" access="read"></variable>
    <variable name="order_priority" access="read"></variable>
    <variable name="order_orderid" access="read"></variable>
    <variable name="order_discount" access="read"></variable>
    <variable name="entireOrderAsXML" access="read"></variable>
    </controller>
    </task>
    <transition name="" to="Calculate Discount"></transition>
    </task-node>
    
  16. XHTML データ形式を作成して、これらの変数を jbpm-console の形式で表示します。
    注記
    詳細は、 bpm_orchestration4 クイックスタートの Review_Order.xhtml ファイルを参照してください。
  17. これらの設定を form .xml ファイルに追加して、このデータ形式を task node にリンクします。
    <forms>
    <form task="Order Review" form="Review_Order.xhtml"/>
    <form task="Discount Review" form="Review_Order.xhtml"/>
    </forms>
    
  18. この場合、2 つのタスクノードに同じ形式が適用されます。以下のサンプルコードに示されるように、Review Order フォームの変数への参照があります。(次に、JBoss Business Process Manager のコンテキストで設定される変数を参照します。)
    <jbpm:datacell>
    <f:facet name="header">
    <h:outputText value="customer_firstName"/>
    </f:facet>
    <h:inputText value="#{var['customer_firstName']}" />
    </jbpm:datacell>
    
  19. プロセスが Review Node に到達すると、jBPM コンソールにログインし、Task をクリックしてアイテムのリストを表示できます。
  20. タスクをクリックして詳細を確認します。フォームが表示されます。その後、一部の値を更新できます。
  21. Save and Close をクリックして結論します。この時点で、プロセスは次のノードに移動します。
  22. これは Calculate Discount ノードです。繰り返しになりますが、このノードは、以下のような設定ファイルです。
    <node name="Calculate Discount">
    <action name="esbAction" class="
    org.jboss.soa.esb.services.jbpm.actionhandlers.EsbActionHandler">
    <esbCategoryName>BPM_Orchestration4</esbCategoryName>
    <esbServiceName>DiscountService</esbServiceName>
    <bpmToEsbVars>
    <mapping bpm="entireCustomerAsObject" esb="customer" />
    <mapping bpm="entireOrderAsObject" esb="orderHeader" />
    <mapping bpm="entireOrderAsXML" esb="BODY_CONTENT" />
    </bpmToEsbVars>
    <esbToBpmVars>
    <mapping esb="order"
    bpm="entireOrderAsObject" />
    <mapping esb="body.order_orderDiscount" bpm="order_discount" />
    </esbToBpmVars>
    </action>
    <transition name="" to="Review Discount"></transition>
    </node>
    
    サービスは、顧客orderHeader、および entireOrderAsXML データを受け取ります。次に割引を計算します。応答は、body.order_orderDiscount の値を order_-discount という JBoss Business Process Manager コンテキスト変数にマッピングします。プロセスが通知され、Review Discount ノードに移行するように指示します。
  23. 値が 8.5 に設定されている割引を確認します。Save and Close をクリックします。プロセスは Ship It ノードに移動します。このノードも、Mastive サービスです。
    Ship It サービスの完了前に注文プロセスを回避するには、以下のように EsbNotifier アクションハンドラーを送信移行にアタッチしてこれを使用します。
    <node name="ShipIt">
    <transition name="ProcessingComplete" to="end">
    <action name="ShipItAction" class=
    "org.jboss.soa.esb.services.jbpm.actionhandlers.EsbNotifier">
    <esbCategoryName>BPM_Orchestration4</esbCategoryName>
    <esbServiceName>ShippingService</esbServiceName>
    <bpmToEsbVars>
    <mapping bpm="entireCustomerAsObject" esb="customer" />
    <mapping bpm="entireOrderAsObject" esb="orderHeader" />
    <mapping bpm="entireOrderAsXML" esb="entireOrderAsXML" />
    </bpmToEsbVars>
    </action>
    </transition>
    </node>
    
    ShippingService に通知した後、オーダープロセスは終了状態に移行し、終了します。( ShippingService 自体は終了している可能性があります。)
    bpm_orchestration4 のクイックスタートでは、 JBoss Rules エンジンを使用して、この順番が normal メソッドまたは express メソッドから同梱されるかどうかを決定します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る