ofbiz的工作流引擎怎么用啊?强烈呼唤帮助!
Client Api具体怎么用? 当中流程怎么控制?
有没有简单的例子参考一下啊?
我记得之前看struts的时候,国内研究的人少之又少,中文文档更是见不到,然而不到1年的时间,不仅研究的人增多了,而且很多相关的项目也都出现了!高手更多了!希望ofbiz的研究能像struts一样迅速发展!:)
banq同意吗?希望banq指点指点!:)
http://www.easyworkflow.org/
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")));启动工作流,对应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"]
ofbiz_home\commonapp\src\org\ofbiz\commonapp\order\order\orderProcessXPDL.xml 读懂它可能你还要参看WFMC关于接口一的文章