JBPM事情流引擎
当前位置:以往代写 > JAVA 教程 >JBPM事情流引擎
2019-06-14

JBPM事情流引擎

JBPM事情流引擎

副标题#e#

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 

ERP,OA,CRM内网系统,需要多小我私家(多个步调)处理惩罚

JBPM是由JBoss推出的,用来完成事情流的一套开拓包。

事情流并不是技能的观念,而是通过措施描写业务流程的成果。

一般利用事情流实现的成果有:告假,报销,出差申请,保险理赔等

在开拓JBPM时,需要先成立一个JBoss的流程描写文件(插手插件),

留意插件在文件夹内部

JBPM工作流引擎

导入jbpm的sql语句

JBPM工作流引擎

本栏目


#p#副标题#e#

并将流程绘制到该文件中,生成流程图,以及将流程信息宣布随处事器中。

按照业务,在成立好的流程文件中绘制执行流程。

流程由节点和路径构成

节点分为以下几类:

1) Start:开始节点

2) End:竣事节点

3) Task:任务节点

4) Decision:判定节点

绘制流程时,必需先有一个流程描写的文档,按照此文档来绘制流程。

首先先成立流程图模子

JBPM工作流引擎

将xml和图片文件复制到MyEclipse,假如在MyEclipse内里下了jbpm插件可以在MyEclipse中成立

JBPM工作流引擎

在绘制好流程图后,需要声明每个Task节点的任务处理惩罚人。需要插手jbpm.jar,假如在MyEclipse中可以自动插手hibernate的所有包

本栏目

#p#副标题#e#

手动画图会生成下面的xml文件,生存会生成图片

<?xml version="1.0" encoding="UTF-8"?>
    
    
<process key="reim" name="Reimbursement" xmlns="http://jbpm.org/4.4/jpdl">
<start name="start1" g="173,72,48,48">
<transition to="填写报销单"  />
</start>
<end name="end1" g="423,375,48,48"  />
<task name="填写报销单" g="148,185,92,52">
<assignment-handler class="com.kane.handler.InsertHandler" />
<transition to="财政审核" g="318,246:"  />
</task>
<task name="财政审核" g="400,185,92,52">
<assignment-handler class="com.kane.handler.FinancialHandler" />
<transition name="通过" to="exclusive1" g="7,-9"  />
<transition name="不通过" to="填写报销单" g="315,175:-16,-20"  />
</task>
<task name="CEO审核" g="144,365,92,52">
<assignment-handler class="com.kane.handler.CEOHandler" />
<transition name="通过" to="end1" g="-10,-23"  />
<transition name="不通过" to="填写报销单" g="-42,-6"  />
</task>
<decision name="exclusive1" g="421,281,48,48">
<handler class="com.kane.handler.MoneyCheckHandler" />
<transition name="高出2000" to="CEO审核" g="-42,-24"  />
<transition name="不到2000" to="end1" g="8,-10"  />
</decision>
    
    
</process>

在web项目插手hibernate支持

JBPM工作流引擎

本栏目

#p#副标题#e#

成立本身的数据库

CREATE TABLE member(
userid varchar2(20) primary key,
roleid int
)
#1是普通用,2是财政,3是ceo
    
INSERT INTO member VALUES('kane',1);
INSERT INTO member VALUES('kabne1',1);
INSERT INTO member VALUES('ka',1);
INSERT INTO member VALUES('cw0',2);
INSERT INTO member VALUES('cw1',2);
INSERT INTO member VALUES('ceo',1);
INSERT INTO member VALUES()
CREATE TABLE reimbursement(
rid varchar2(30) primary key,
reason varchar2(200),
money number(7,2),
userid varchar2(20),
pub_time date,
check_userid varchar2(20),
check_time date,
back_reason
    
)

生成映射

JBPM工作流引擎

dao,service正常写,记得拷入jbpm.jar到lib内里

开始写handler,对应设置文件里写好的,留意任务节点实现AssignmentHandler,判定节点实现DecisionHandler

接着复制两个设置文件jbpm.cfg.xml和jbpm.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="myeclipse.connection.profile">oracle</property>
<property name="connection.url">jdbc:oracle:thin:@192.168.2.55:1521:ORCL</property>
<property name="connection.username">ysk</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="show_sql">true</property>
<property name="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"  />
    
    
</session-factory>
</hibernate-configuration>

本栏目

#p#副标题#e#

#p#分页标题#e#

写个运行措施宣布流程文件

package com.kane.utils;
    
    
import java.io.File;
    
    
import org.jbpm.api.Configuration;
import org.jbpm.api.NewDeployment;
import org.jbpm.api.ProcessEngine;
    
    
public class ProcessExport {
    
    
/**
* @param args
*/
public static void main(String[] args) {
// 需要先成立一个JBPM焦点操纵工具
ProcessEngine pe=new Configuration().buildProcessEngine();
//成立一个流程宣布工具
NewDeployment nd = pe.getRepositoryService().createDeployment();
//宣布一个流程文件
nd.addResourceFromFile(new File("D:/workspace2/JBPMweb/src/Reimbursement.jpdl.xml"));
nd.deploy();
pe.close();
}
    
    
}

呈现以下功效即乐成,别忘了先前导入自带的数据库文件

JBPM工作流引擎

本栏目

#p#副标题#e#

也可以select * from jbpm4_deployprop查察;

接下来开始写web页面,默认直接用户名登岸,登岸之后开始可以查察任务,这里要用到jbpm

package com.kane.utils;
    
    
import java.util.ArrayList;
import java.util.List;
    
    
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.task.Task;
    
    
public class JDPMUtil {
private static ProcessEngine pe;
static{
pe=new Configuration().buildProcessEngine();
}
public static List<Task> getAllTaskByUserid(String userid) {
List<Task> allTask=new ArrayList<Task>();
//小我私家任务
List<Task> allPersonTask=pe.getTaskService().findPersonalTasks(userid);
//到了财政那,有多个任务,多小我私家都可以看
List<Task> allGroupTask=pe.getTaskService().findGroupTasks(userid);
if (allPersonTask!=null) {
allTask.addAll(allPersonTask);
}
if (allGroupTask!=null) {
allTask.addAll(allGroupTask);
}
return allTask;
}
}

还要插手mail.jar

呈现异常

java.lang.reflect.InvocationTargetException 异常

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I

办理步伐

JBPM工作流引擎

    关键字:

在线提交作业