jbpm总结zd

1、jbpm的流程
1、画流程图
*.jpdl.xml:jpdl(jboss process definition language),pdl(流程定义语言)
*.png 图片
开始节点
结束节点
task节点
把task节点赋值任务的执行人<task name="申请请假" g="168,178,92,52" assignee="张三">
2、把流程图部署到jbpm引擎中(实质是部署到数据库中)
把一个zip文件部署到jbpm引起中了
3、启动流程实例:
整个流程会自动的离开开始节点
4、以张三的身份登录,查看该人要执行的任务
5、张三完成请假申请的任务
在完成请假申请任务的时候,可以设置流程变量
6、按照上面的做法走完流程
2、环境的搭建
jbpm.cfg.xml(jbpm的配置文件)
<import resource="jbpm.tx.hibernate.cfg.xml" />
说明jbpm中的事务是由hibernate处理的
jbpm.hibernate.cfg.xml
链接数据库的信息
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="hibernate.connection.url">jdbc:hsqldb:mem:.</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.format_sql">true</property>
映射文件的信息
<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" />
引入jar包
创建表
3、流程定义和流程部署
1、流程部署
1、概念
把一个流程zip文件部署到数据库的过程
2、说明
pdkey 流程定义名称
pdname 小名
pdversion 版本号
pdid {pdkey}-{pdversion}
langid
1、每部署一次,生成4行代码
2、在pdkey不变的情况下,每部署一次,版本号加1
2、涉及的表
jbpm4_deployment
jbpm4_deployprop
jbpm4_lob
3、说明
1、每部署一次,在部署表中生成一行记录
2、在jbpm4_deployprop表中生成4行记录
3、在删除的时候,只能按照流程部署进行删除(缺点)
4、流程实例
1、启动流程实例
1、pdid启动
2、pdkey 最高版本
2、完成任务
3、直接结束流程实例
4、涉及的表
jbpm4_execution
jbpm4_task
jbpm4_hist_procinst
jbpm4_hist_task
5、查询
所有的正在执行的任务
所有的已经完成的任务
5、流程变量
1、作用范围:流程实例
2、必须和流程实例绑定在一起
3、在流程实例开始的任何时候都可以设置流程变量
4、在流程实例开始的任何时候都可以获取流程变量
5、流程变量
1、基本类型
2、bean必须实现对象的序列化接口
3、hibernate entity long/string
6、给任务赋值
1、在画流程图的时候,可以把某一个任务的执行人固化在流程图中
2、可以利用assign=#{变量}的形式动态的赋值任务的执行人,但是必须进入该节点之前赋值
3、可以利用程序的方式动态赋值assignTask
4、可以实现AssignmentHandler接口赋值
7、组任务
1、有很多人具有该任务的执行权力,只要有一个执行人把该任务执行完毕,就可以了
2、查询
可以根据执行人查询组任务
可以组任务查询执行人
3、接受任务
takeTask
4、完成任务
8、transition节点
指明任务的出处outcome
9、state节点
1、不需要人工参与
2、singalExecutionById执行该方法才能流向下一个节点
10、decision节点
11、forkjoin节点
12、event

13、spring与jbpm的整合
1、解决的问题
事务的问题
processEngine由spring产生
2、步骤
1、关于jar包
删除原来的db和hibernate的包
2、关于配置文件
1、原来的hibernate.cfg.xml文件不用了
2、在jbpm.hibernate.cfg.xml文件中
1、关于数据库的链接信息
2、关于系统本身的映射文件的信息
3、关于jbpm的映射文件的信息
3、jbpm.cfg.xml文件
<import resource="jbpm.tx.hibernate.cfg.xml" />改成<import resource="jbpm.tx.spring.cfg.xml" />
说明jbpm中事务的部分由spring来管理
3、在spring的配置文件中
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
<property name="jbpmCfg" value="jbpm/jbpm.cfg.xml"></property>
</bean>

<bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" />
在spring容器中产生processEngine

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:jbpm/jbpm.hibernate.cfg.xml</value>
</property>
</bean>

posted @ 2014-03-05 22:39  教程学习  阅读(193)  评论(0)    收藏  举报