JBPM4.4(二)——初步运用
来源:互联网 发布:清华社会科学学院 知乎 编辑:程序博客网 时间:2024/05/18 03:42
这篇博客重点描述一下JBPM4.4的初步运用,利用eclipse进行工作流开发,首先需要进行eclipse插件的安装jbpm-gpd-site.zip。通过help->Install NewSoftware进行安装即可。当我们右击新建other出现如图所示时,表示我们已经安装好了:
好,安装好了,看一下如何使用吧:
一,和各种框架一样,首先需要JBPM4.4所需要的jar包,这里利用MySql数据库为例演示:
jbpm.jar(核心jar包)
lib\*.jar(删除mysql-connector-java.jar,我们自己引入MySql的驱动jar包,这里有很多jar包,我们可以有选择的进行删除,例如一些例子,日志的,单元测试的等,当然了如果不知道的话就不要删除)
MySQL JDBC Driver(MySql的驱动jar包)
二,编写必要的配置文件:
1,jbpm.cfg.xml的编写:
<?xml version="1.0" encoding="UTF-8"?><jbpm-configuration> <!-- 引入jbpm的一些配置文件 --> <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>
2,jbpm.hibernate.cfg.xml,JBPM的持久化层就是使用Hibernate的:
<hibernate-configuration> <session-factory> <!-- 数据库连接,注意方言的要用InnoDB的 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</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" /> <mapping resource="com/bjpowernode/jbpm4/FlowCard.hbm.xml"/> <mapping resource="com/bjpowernode/jbpm4/ApproveInfo.hbm.xml"/> </session-factory></hibernate-configuration>
三,定义流程:JPDL(Jboss JBPM Process Definition Language),用来构建构建JBPM框架上的流程语言之一。在JPDL中提供了任务(tasks)、待处理状态(wait states)、计时器(timers)、自动处理(automated actions)……等,并通过图形化的流程定义,很直观的描述业务流程。其实就是画活动流程图,它会自动为我们生成项目需要的XML资源文件,然后进行解析此资源文件,进行流程的处理,这里其实就是我们只需要关心流程,对于具体的操作,JBPM已经都进行封装。
四,部署流程:
将利用JPDL定义流程的xml文件和图片进行压缩成zip压缩包,利用repositoryService进行部署:
//创建processEngineProcessEngine processEngine = new Configuration().buildProcessEngine();//创建RepositoryService,其他六个一样的创建法RepositoryService repositoryService = processEngine.getRepositoryService(); //进行部署,repositoryService.createDeployment().addResourcesFromZipInputStream(new ZipInputStream(new FileInputStream("zip包的路径"))).deploy();
五,创建流程实例,当然也可以通过获取最新版本的流程进行动态获取id
//利用executeService,注意id=key + 横线 + version executionService.startProcessInstanceById("FlowCard-1");//获得最新版本的流程定义ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION).page(0, 1).uniqueResult();//创建流程实例executionService.startProcessInstanceById(processDefinition.getId());
六,采用TaskService取得代办流程并进行处理,简单看一个测试程序:
//取得张三的待办任务public void testJbpm3() {//取的代办流程Task task = taskService.findPersonalTasks("张三").get(0);//获取JBPM中的session方便,便于事物的处理EnvironmentFactory environmentFactory = (EnvironmentFactory)processEngine;EnvironmentImpl environmentImpl = environmentFactory.openEnvironment();DbSessionImpl dbSessionImpl = environmentImpl.getFromCurrent(DbSessionImpl.class);Session session = dbSessionImpl.getSession();try {//开启事物session.getTransaction().begin();//流程单的信息添加FlowCard flowCard = new FlowCard();flowCard.setName("xxxx");flowCard.setLevel("xxxxx");flowCard.setCreateTime(new Date());flowCard.setCreator("xxxx");//保存流向单session.save(flowCard);//将流向单信息放到流程变量中Map<String, Object> variables = new HashMap<String, Object>();variables.put("id", flowCard.getId());variables.put("level", flowCard.getLevel());//放到jbpm4_variable表中,流程变量与流程共存亡taskService.setVariables(task.getId(), variables);//完成任务taskService.completeTask(task.getId());//提交事物session.getTransaction().commit();}catch(Exception ex) {ex.printStackTrace();//事物回滚session.getTransaction().rollback();}finally {session.close();}}
这样就可以根据不同的角色进行处理,JBPM会根据JPDL定义流程自动进行流转。这里需要说的对于6个Service,需要熟练掌握,我们都是通过Service的方法进行对表进行操作的,多看的API文档。
综上为JBPM4.4的简单运用,注意对JPDL流程定义图的画法属性掌握和流程变量的处理,6个Service方法属性的灵活掌握,这样我们才能对表中的数据进行灵活的处理。建议初期多观察观察表中的数据,对于JBPM处理工作流的流程有个很好的认识,对于更好的驾驭还是非常不错的。
- JBPM4.4(二)——初步运用
- JBPM4.4(二)——初步运用
- JBPM4.4——与SSH的集成运用
- JBPM4.4(三)——与SSH的集成运用
- JBPM4.4(三)——与SSH的集成运用
- JBPM4.4开发(二)-------------决策节点decision
- 【基础篇】工作流技术JBPM4.4开发入门(二)
- JBPM4.4工作流引擎学习(二)--安装GPD
- JBPM4.4总结(一)——基础知识
- JBPM4.4总结(一)——基础知识
- JBPM4.4学习二------JBPM4.4+SSH+Tomcat+Sqlserver整合
- JBPM4—请假流程
- JBPM (二)jbpm4.4环境搭建
- Yum运用详解(二)——yum命令
- 笔记二十一(综合运用——飞船)
- logstash入门系列(二)——简单运用
- JBPM4入门——3.JBPM4开发环境的搭建
- jbpm4——常见问题解答
- iOS study Day17-沙盒数据库(sqlite)的增删改查
- AVR Studio6.x 软件仿真 延时函数 有问题
- 第七周项目二
- 嵌入式博文
- TCP建立连接为什么是三次握手而不是两次握手
- JBPM4.4(二)——初步运用
- Windows环境下配置Objective-C的编译环境
- UVa211 - The Domino Effect(DFS)
- Extjs4.2与struts后台交互弹框
- Linux系统下利用crontab实现程序的鲁棒性
- 输出日期时间--友元函数
- Date类和SimpleDateFormat类
- Find your present!(异或运算)
- 闲来无事---写了一个生成验证码的代码