关闭

JBPM(三)ProcessEngine与Service API

78人阅读 评论(0) 收藏 举报
分类:

1.获取processEngine的方法:

a) 方法一

private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

b) 方法二

// 获取单例的ProcessEngine对象,使用的是默认的配置文件(jbpm.cfg.xml)

private ProcessEngine processEngine = Configuration.getProcessEngine(); 

在 jbpm.cfg.xml 中:

<jbpm-configuration>
	  <import resource="jbpm.default.cfg.xml" />
	  <import resource="jbpm.businesscalendar.cfg.xml" />		
	  <import resource="jbpm.tx.hibernate.cfg.xml" />
	  <import resource="jbpm.jpdl.cfg.xml" />
	  <import resource="jbpm.bpmn.cfg.xml" />
	  <import resource="jbpm.identity.cfg.xml" />
</jbpm-configuration>
在 jbpm.hibernate.cfg.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
	  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- 如果是MySQL,一定要使用org.hibernate.dialect.MySQL5InnoDBDialect方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///jbpm4_test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">1234</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- 这些映射文件是JBPM的,不能删除!!! -->
		<mapping resource="jbpm.repository.hbm.xml" />
		<mapping resource="jbpm.execution.hbm.xml" />
		<mapping resource="jbpm.history.hbm.xml" />
		<mapping resource="jbpm.task.hbm.xml" />
		<mapping resource="jbpm.identity.hbm.xml" />
	</session-factory>
</hibernate-configuration>



2.常用的Service API(JBPM所有的操作都是通过Service完成的)

a) processEngine.getRepositoryService();//管理流程定义的相关操作(部署,查询,删除等)

b) processEngine.getExecutionService();//管理执行的,流程实例的管理操作,一次具体执行的信息,包括启动、推进、删除Execution等操作

c) processEngine.getTaskService();//管理任务的(查询任务,办理任务)

d) processEngine.getHistoryService();//管理历史的数据(执行完的数据管理,主要是查询)

3.API风格

a) 方法调用链.

b) 每一个方法都是流程有关的一个业务操作,默认是一个独立的事务.

4.查询的有关API            

功能说明

相应的查询API

查询“流程定义”

ProcessDefinitionQuery processDefinitionQuery = 

processEngine.getRepositoryService()

.createProcessDefinitionQuery();

查询“执行对象”

(流程实例)

ProcessInstanceQuery processInstanceQuery = 

processEngine.getExecutionService() //

.createProcessInstanceQuery();

查询“任务”

TaskQuery taskQuery = //

processEngine.getTaskService()//

.createTaskQuery();

查询“执行历史”

(流程实例历史)

HistoryProcessInstanceQuery historyProcessInstanceQuery = 

processEngine.getHistoryService()

.createHistoryProcessInstanceQuery();

查询“任务历史”

HistoryTaskQuery historyTaskQuery = 

processEngine.getHistoryService()

.createHistoryTaskQuery();

以上列出的Query对象有:

1. ProcessDefinitionQuery

2. ProcessInstanceQuery

3. TaskQuery

4. HistoryProcessInstanceQuery

5. HistoryTaskQuery

 

这些Query对象的使用方法都是一致的,如下所示:

1, 添加过滤条件:调用其中的有关方法指定条件即可。如:

a) processDefinitionQuery.processDefinitionKey("请假")是指定查询key”请假”的流程定义;

b) taskQuery.assignee("张三")是指定办理人为”张三”的任务。

2, 添加排序条件:

a) 调用 xxQuery.orderAsc(property),表示按某属性升序排列

b) 调用 xxQuery.orderDesc(property),表示按某属性降序排列

c) 可指定多个排序条件,就是代表第1顺序,第2顺序…等。

d) 属性名在各自的Query对象(接口)中有常量定义,如:

i. ProcessDefinitionQuery.PROPERTY_ID

ii. ProcessDefinitionQuery.PROPERTY_KEY

iii. TaskQuery.PROPERTY_NAME

iv. TaskQuery.PROPERTY_ASSIGNEE

3, 指定分页有关信息:

a) 调用方法xxQuery.page(firstResult, maxResults);

b) 这是指定firstmax的值(就是Hibernate中的Query.setFirstResult()Query.setMaxResults()

c) 如果没有调用这个方法,代表要查询出符合条件的所有记录。

4, 查询得到结果:

a) 调用方法xxQuery.list(); 表示查询列表

b) 调用方法 xxQuery.uniqueResult(); 表示查询唯一的结果调用方法xxQuery.count(); 表示查询符合条件的记录数量

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:96246次
    • 积分:2570
    • 等级:
    • 排名:第14819名
    • 原创:165篇
    • 转载:17篇
    • 译文:0篇
    • 评论:6条