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定义流程自动进行流转。这里需要说的对于6Service,需要熟练掌握,我们都是通过Service的方法进行对表进行操作的,多看的API文档。

 

        综上为JBPM4.4的简单运用,注意对JPDL流程定义图的画法属性掌握和流程变量的处理,6Service方法属性的灵活掌握,这样我们才能对表中的数据进行灵活的处理。建议初期多观察观察表中的数据,对于JBPM处理工作流的流程有个很好的认识,对于更好的驾驭还是非常不错的。



6 0
原创粉丝点击