形象描述JBPM的简单部署

准备工作
1.Eclipse(3.3)&MyEclipse(6.6)
关联Jbpm
----
安装根目录下创建links文件夹->建立xxx.link文件->写入path=c:/jbpm/designer->完成
2.
新建工程

目录结构

----|jBPM

--------|src

------------|cn.dzdd.jbpm.deploy                    ---->部署代码

----------------|Deploy_API

------------|helloworld                               ---->Process Definition

----------------|gpd.xml                             ---->图片坐标(可有可无)

----------------|processdefinition.xml                ---->流程定义(必须有且名称相同)

----------------|processimage.jpg                    ---->流程定义相关联图片(可有可无)

------------|hibernate.cfg.xml                       ---->直接复制jbpm根目录下

------------|jbpm.cfg.xml                                config目录下的文件

------------|log4j.properties                              jbpm.cfg.xml默认配置

……

--------|Referenced Libraries                        ---->导入所需JAR

------------|activation.jar                                 复制jbpm根目录下以及lib目录下的jar

------------|antlr-2.7.6.jar

------------|asm.jar

------------|bsh.jar

------------|cglib.jar

------------|commons-collections.jar

------------|commons-logging.jar

------------|dom4j.jar

------------|hibernate3.jar

------------|jboss-backport-concurrent.jar

------------|jboss-j2ee.jar

------------|jboss-retor-1.1.0-rt.jar

------------|jbpm-identity.jar

------------|jbpm-jpdl.jar

------------|jcr-1.0.jar

------------|log4j.jar


---------------------------------------------processdefinition.xml-------------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<process-definition  xmlns=""  name="helloworld">

    <start-state name="start-state1">

       <transition to="task-node1"></transition>

    </start-state>

    <task-node name="task-node1">

       <task name="订单">>

           <assignment actor-id="客户"></assignment>

       </task>

       <transition to="task-node2"></transition>

    </task-node>

    <task-node name="task-node2">

       <task name="发货">

           <assignment actor-id="厂家"></assignment>

       </task>

       <transition to="task-node3"></transition>

    </task-node>

    <task-node name="task-node3">

       <task name="收货">

           <assignment actor-id="客户"></assignment>

       </task>

       <transition to="end-state1"></transition>

    </task-node>

    <end-state name="end-state1"></end-state>

</process-definition>

--------------------------------------------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>

    <!— 修改数据库连接的配置 -->

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- JDBC connection properties (begin) -->

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:mysql:///jbpm</property>

    <property name="hibernate.connection.username">root</property>

    <property name="hibernate.connection.password">1234</property>

    <!-- 添加一个hbm2ddl.auto属性为update创建所需要的表 -->

    <property name="hbm2ddl.auto">update</property>

    <!-- JDBC connection properties (end) -->

......


部署代码

 

package cn.dzdd.jbpm.deploy;

 

import java.util.List;

import org.hibernate.cfg.Configuration;

import org.jbpm.JbpmConfiguration;

import org.jbpm.JbpmContext;

import org.jbpm.graph.def.ProcessDefinition;

import org.jbpm.graph.exe.ProcessInstance;

import org.jbpm.taskmgmt.exe.TaskInstance;

import org.junit.Test;

 

public class Deploy_API {

    //准备数据、读取hibernate.cfg.xml创建所需要表

    @Test

    public void createSchema(){

       new Configuration().configure().buildSessionFactory();

    }

    //部署流程定义

    @Test

    public void deploy(){

       ProcessDefinition pd = null;

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

       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();

       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

       try {

           jbpmContext.deployProcessDefinition(pd);        

       } catch (RuntimeException e) {

           jbpmContext.setRollbackOnly();

           throw e;

       }finally{

           jbpmContext.close();

       }

    }

    //启动流程实例

    @Test

    public void startProcessInstance(){

       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();

       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

       ProcessDefinition processDefinition =

           jbpmContext.getGraphSession().findLatestProcessDefinition("helloworld");

       ProcessInstance processInstance = processDefinition.createProcessInstance();

       processInstance.getRootToken().signal();

       jbpmContext.close();

    }

    //获取任务实例列表

    @Test

    public void getTaskList() {

       String actorId = "客户";               //指定的任务实例名

//     String actorId = "厂家";         

       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();

       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

       List<TaskInstance> list = jbpmContext.getTaskList(actorId);

       System.out.println("------------>");

       for (TaskInstance taskInstance : list) {

           System.out.println("id="+taskInstance.getId()+"/r/n"//

                  +"name="+taskInstance.getName()+"/r/n"//

                  +"actorId="+taskInstance.getActorId()+"/r/n"//

                  +"create="+taskInstance.getCreate()+"/r/n"//

                  +"start="+taskInstance.getStart()+"/r/n"//

                  +"end="+taskInstance.getEnd());

       }

       jbpmContext.close();

    }

    private long taskInstanceId = 1;         //指定的流程标记

    // 开始任务

    @Test

    public void startTask() {

       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();

       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

       TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId);

       taskInstance.start();

       jbpmContext.close();

    }

    // 结束任务

    @Test

    public void endTask() {

       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();

       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

       TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId);

       taskInstance.end();

       jbpmContext.close();

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值