最近开始了解JBPM,边学,边总结一下常用的方法
[b]获得JBPM上下文[/b]
[b]持久相关的操作[/b]
[b]加载流程创建实例[/b]
[b]获得流程定义中的节点[/b]
[b]执行指定名称的transition[/b]
[b]获得JBPM上下文[/b]
//默认使用名为"jbpm.cfg.xml"的配置文件
JbpmConfiguration configuration = JbpmConfiguration.getInstance();
//JbpmConfiguration configuration = JbpmConfiguration.getInstance(cfgName);
//使用默认工厂实例对应的名称为 JbpmContext.DEFAULT_JBPM_CONTEXT_NAME
JbpmContext context = configuration.createJbpmContext() ;
//JbpmContext context = configuration.createJbpmContext(contextName) ;
//保存流程实例
context.deployProcessDefinition(ProcessDefinition processDefinition);
[b]持久相关的操作[/b]
TaskMgmtSession mgmtSession = context.getTaskMgmtSession();
/**
*DbPersistenceServiceFactory dbPersistenceServiceFactory = (DbPersistenceServiceFactory) jbpmConfiguration.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
DbPersistenceService service = (DbPersistenceService)dbPersistenceServiceFactory.openService();
DbPersistenceService service = new DbPersistenceService( dbPersistenceServiceFactory);
service.getTaskMgmtSession();
*/
[b]加载流程创建实例[/b]
InputStream is = MyClass.class.getResourceAsStream("processdefinition_web.xml");
ProcessDefinition processDefinition = ProecessDefinition.parseXmlInputStream(is);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
[b]获得流程定义中的节点[/b]
//通过当前的根令牌所在的节点
Node node = processInstance.getRootToken().getNode();
//通过名称检索节点
Node node = processDefinition.getNode(nodeName);
[b]执行指定名称的transition[/b]
//节点open定义了两个Transition
/*<state name="Open">
* <transition name="close" to="Closed" />
* <transition name="lock" to="Open Locked" />
*</state>
*/
Node node = processDefinition.getNode("Open");
processInstance.getRootToken().setNode(node);
processInstance.signal("lock");
//assertSame(processInstance.getRootToken().getNode(),processDefinition.getNode("Open Locked"));
//processInstance.signal();
//assertSame(processInstance.getRootToken().getNode(),processDefinition.getNode("Closed"));