processorder-->checkblacklist -->processpayment -->success --> clearchart --> initiateOrderWorkflow -->start the workflow
1.首先根据订单提交时的用processorder,根据ecommerce下的controller.xml发现
<request-map uri="processorder">
<security https="true"/>
<event type="java" path="org.ofbiz.commonapp.order.shoppingcart.CheckOutEvents" invoke="createOrder"/>
<response name="success" type="request" value="checkBlacklist"/>
<response name="error" type="view" value="checkout"/>
</request-map>
在调用createOrder成功后,根据success的条件,调用checkBlacklist,同样在根据ecommerce下的controller.xml发现
<request-map uri="checkBlacklist">
<security direct-request="false"/>
<event type="java" path="org.ofbiz.commonapp.order.shoppingcart.CheckOutEvents" invoke="checkOrderBlacklist"/>
<response name="success" type="request" value="processpayment"/>
<response name="failed" type="request" value="failedBlacklist"/>
<response name="error" type="view" value="checkout"/>
</request-map>
在checkOrderBlacklist成功后,根据success,转向processpayment
<request-map uri="processpayment">
<security https="true" direct-request="false"/>
<event type="java" path="org.ofbiz.commonapp.order.shoppingcart.CheckOutEvents" invoke="processPayment"/>
<response name="success" type="request" value="clearcartfororder"/>
<response name="fail" type="view" value="checkoutoptions"/>
<response name="error" type="view" value="checkout"/>
</request-map>
processPayment成功后,转向clearcartfororder
<request-map uri="clearcartfororder">
<security direct-request="false"/>
<event type="java" path="org.ofbiz.commonapp.order.shoppingcart.ShoppingCartEvents" invoke="clearCart"/>
<response name="success" type="request" value="initiateOrderWorkflow"/>
<response name="error" type="view" value="checkout"/>
</request-map>
成功后,调用initiateOrderWorkflow,
<request-map uri="initiateOrderWorkflow">
<security https="true" direct-request="false"/>
<event type="java" path="org.ofbiz.commonapp.order.shoppingcart.CheckOutEvents" invoke="initiateOrderWorkflow"/>
<response name="success" type="request" value="checkExternalPayment"/>
<response name="error" type="view" value="checkout"/>
</request-map>
在initiateOrderWorkflow中,
dispatcher.runAsync("processOrder", UtilMisc.toMap("orderId", orderId, "orderStatusId", orderHeader.getString("statusId"screen.width/2)this.width=screen.width/2" vspace=2 border=0>));启动工作流,对应services_order.xml中的
<service name="processOrder" engine="workflow" location="org.ofbiz.commonapp.order.order" invoke="ProcessOrder">
<description>Service for testing the workflow engine</description>
<attribute name="orderId" type="String" mode="IN" optional="false"/>
<attribute name="orderStatusId" type="String" mode="INOUT" optional="false"/>
</service>
此service的engine为workflow表示是一个工作流的服务,
service的定义ProcessOrder中的location表示xpdl定义中的package,
<Package Id="org.ofbiz.commonapp.order.order">
invoke对应与在orderProcessXPDL.xml中,
<WorkflowProcess Id="ProcessOrder" Name="Processes incoming orders">
======================================
在ecommerce中下单后,
在ordermgr中
此订单的my status的状态为hold
在workeffort中
activity status为suspended,my status为accepted,activity name 为Order Not Ready
准备收钱,点击[receive Payment]
aciton=ttp://localhost:8080/ordermgr/control/receivepayment?order_id=10000&workEffortId=10002&partyId=admin&roleTypeId=_NA_&fromDate=2003-06-29 10:43:03.0
在收到钱后,点击[save]
action=/ordermgr/control/receiveOfflinePayments/orderview?order_id=10000&workEffortId=10002&partyId=admin&roleTypeId=_NA_&fromDate=2003-06-29 10:43:03.0
此时,orderlist中
在ordermgr中
此订单的my status的状态为waiting
在workeffort中
activity status为not started,my status为sent,activity name 为Complete Order