读书人

JBPM4之取舍实例

发布时间: 2012-10-12 10:17:04 作者: rapoo

JBPM4之选择实例

1. 流程图

JBPM4之取舍实例

如果传入的条件为“you are good” 则走good 分支并执行完成操作,good分支转向completed ,此操作之心hello操作。

如果传入的条件为“you are bad”则走bad 分支并结束流程

2. 流程定义文件

?
这里当执行到checkOrder选择条件时,执行一个处理句柄通过handler标签定义,具体处理类通过com.spring.order.purchaseOrderHandler处理

3. 处理类实现

??? 此类实现 如果传入的参数为"you are greate" 则让流程走向 good 分支 否则执行bad 分支、

??? 此类需要实现接口DecisionHandler

???

package com.spring.order;import java.util.HashMap;import java.util.Map;import org.jbpm.api.Configuration;import org.jbpm.api.ProcessEngine;import org.jbpm.api.ProcessInstance;import org.jbpm.api.history.HistoryProcessInstance;import org.jbpm.api.history.HistoryProcessInstanceQuery;public class ProcessEngineLearn {public static String deployProcess(ProcessEngine pe, String jpdlPath) {return pe.getRepositoryService().createDeployment().addResourceFromClasspath(jpdlPath).deploy();}public static void deleteProcessInst(ProcessEngine pe, String processInstId) {pe.getRepositoryService().deleteDeployment(processInstId);}public static ProcessInstance excuteProcess(ProcessEngine pe, String key,Map<String, Object> variables) {return pe.getExecutionService().startProcessInstanceByKey(key,variables);}public static void findHisProcessInstance(ProcessEngine pe) {HistoryProcessInstanceQuery hpq = pe.getHistoryService().createHistoryProcessInstanceQuery();System.out.println(hpq.count());System.out.println(hpq.processDefinitionId("Hello-3").list().size());for (java.util.Iterator<HistoryProcessInstance> it = hpq.processDefinitionId("Hello-3").list().iterator(); it.hasNext();) {HistoryProcessInstance hpi = (HistoryProcessInstance) it.next();System.out.println("hpi.getProcessInstanceId()="+ hpi.getProcessInstanceId());System.out.println("hpi.getProcessDefinitionId()="+ hpi.getProcessDefinitionId());pe.getExecutionService().startProcessInstanceById(hpi.getProcessDefinitionId());}}/** * @param args * @throws InterruptedException */public static void main(String[] args) throws InterruptedException {ProcessEngine pe = new Configuration().buildProcessEngine();deployProcess(pe, "com\\spring\\order\\perchaseOrder2.jpdl.xml");Map<String, Object> variables = new HashMap<String, Object>();variables.put("content", "you are bad");// 传入流程的参数excuteProcess(pe, "PurchaseOrder2", variables);}}

?

读书人网 >软件架构设计

热点推荐