JBPM的核心API使用总结(汤阳光)

1.对jbpm 3.2.2包结构的介绍.  
Config文件夹,放的是配置文件.
Db文件夹,是需要的数据库脚本.
Designer文件夹,是对Eclipse的一个设计器插件.
Doc文件夹,是文档.
Lib文件夹,jbpm需要的第三方类库.
Server文件夹,一个服务器,对刚开始学习时,测试很有帮助.
Src文件夹,源文件.
Jbpm- identity.jar/jbpm-jpdl.jar是最主要的jbpm实现包.

2.加上必要的jar包后,还要配 置好配置文件.  
hibernate.cfg.xml.Jbpm的数据持久层是由 Hibernate 来实现的,所以我们可以利用 Hibernate 的 <property name="hbm2ddl.auto">update</property> 属性,来创建 JBPM 需要的表.成功初始化表后是32 张.这里的表我们不能修改.
jbpm.cfg.xml 这个文件打开后是空的.不能不添加.jbpm 会自动加载默认的配置文件.
log4j.perperties这个是可选的,不配置也可以,但没有日志信息.
这三个配置文件的名字不能更改.

3.编写 processdefinition.xml 这个文件的名字不能更改的.  
processimage.jpg 这个文件是可选的.流程图片.如果没有这个文件就不会显示流程图片.
gpd.xml是流程图片的定位文件,也是可选的.

4.部署流程定义  
这里有6个方法,三种方式.
    ProcessDefinition pd = null;
    1, xml 文件,指定的是资源的相对路径(相对于classpath)
    pd = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");  
    // pd = ProcessDefinition.parseXmlInputStream(inputStream);  
    // pd = ProcessDefinition.parseXmlReader(reader);  
    2, zip 文件(流程定义文档),指定的是资源的相对路径(相对于classpath)
    // pd = ProcessDefinition.parseParResource("helloworld/helloworld.zip");  
    // pd = ProcessDefinition.parseParZipInputStream(zipInputStream);  
    3, String
    // pd = ProcessDefinition.parseXmlString(xmlString);  
    JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");  
    4. 创建Session,开始事务
    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); 
    jbpmContext.deployProcessDefinition(pd);  

总结:
这个是在部署流程定义失败的时候,进行回滚.这句话的功能不是直接进行回滚,而是做个回滚标记.在关闭的时候做回滚.
jbpmContext.setRollbackOnly();  

千万要注意,打开的资源一定要记得关闭.不然系统因为这个出现问题,很难定位.
jbpmContext.close();  // 提交/回滚 事务,关闭Session

JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();  这个是单实例,多次调用,其 实就初始化一次,最好设成全局.一次声明,多次使用.

5.创建流程实例  
ProcessDefinition pd = jbpmContext.getGraphSession().findLatestProcessDefinition("helloworld");  
ProcessInstance pi = pd.createProcessInstance();  
这里是不用手动保存的,jbpm会自动执行这个操作.
jbpmContext.save(pi);  
创建一个流程实例
pi.getRootToken().signal();  
关闭打开的资源.Java会自动回收没有引用的对象,但不会回收没有关闭的资源.
jbpmContext.close();  

6.获取任务实例列表  
1)创建Session,开始事务
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();  

List<TaskInstance> list = jbpmContext.getTaskList(actorId);  
        
2)开始任务
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId);  
        ti.start();  
3)结束任务
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId);  
        ti.end();  

上面的API的操作,都是核心的代码.代码还不健壮.不能真正的使用到项目中去.

7.使用模板代码.把上面的 API 核心代码进行套用.  

     ProcessDefinition pd = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");  

        JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");  
        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); // 创建Session,开始事务  

        try {  
        
                ....  
                
        } catch (RuntimeException e) {  
            jbpmContext.setRollbackOnly();  
            throw e;  
        } finally {  
            jbpmContext.close(); // 提交/回滚 事务,关闭Session  
        }  
        
感觉学习的内容很多,不过对API的掌握还有待提高.老师说了,对技术的把握不是会用那么简单.而是要用已经掌握的知识来合理的解决问题才是最主要的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2017年jBPM 正式发布了全新的 7版本。jBPM 是一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来支持整个生命周期中的业务流程: 基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程实例管理,任务列表和任务表单管理以及报告。 部署流程的可选流程仓库(和其他相关知识)。 历史记录(用于查询/监视/分析)。 与Seam,Spring,OSGi等集成 BPM通过以业务用户和开发人员喜欢的方式提供流程管理功能和工具,从而实现业务分析师,开发人员和最终用户之间的桥梁。域特定的节点可以插入调色板,使业务用户更容易理解这些过程。 jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个独立的流程引擎。复杂的业务逻辑可以被建模为业务流程与业务规则和复杂事件处理的组合。jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven仓库中)。 如果您使用Maven,只需添加一个依赖关系pom.xml: org.jbpm jbpm-test 7.3.0.Final 这与Gradle,Ivy和Buildr类似。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值