java中jbpm工作流_java activity工作流

java中jbpm工作流_java activity工作流第一步:导入jbpm需要的jar包第二步:导入需要的配置文件:jbpm.cfg.xml,jbpm.hibernate.cfg.xml,logging.propertiesjbpm.hibernate.cfg.xml:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

第一步:导入jbpm需要的jar包

第二步:导入需要的配置文件:jbpm.cfg.xml,jbpm.hibernate.cfg.xml,logging.properties

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="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="hibernate.connection.url">jdbc:mysql:///jbpm_20130709?characterEncoding=utf8</property>
     <property name="hibernate.connection.username">root</property>
     <property name="hibernate.connection.password">root</property>
    
     <!-- 其它信息 -->
     <property name="hibernate.hbm2ddl.auto">update</property>
     <property name="hibernate.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>


logging.properties

handlers= java.util.logging.ConsoleHandler
redirect.commons.logging = enabled

java.util.logging.ConsoleHandler.level = SEVERE
java.util.logging.ConsoleHandler.formatter = org.jbpm.internal.log.LogFormatter

org.jbpm.level=SEVERE
# org.jbpm.pvm.internal.tx.level=FINE
# org.jbpm.pvm.internal.wire.level=FINE
# org.jbpm.pvm.internal.util.level=FINE

#org.hibernate.level=INFO
#org.hibernate.cfg.SettingsFactory.level=SEVERE
#org.hibernate.cfg.HbmBinder.level=SEVERE
#org.hibernate.SQL.level=FINEST
#org.hibernate.type.level=FINEST
# org.hibernate.tool.hbm2ddl.SchemaExport.level=FINEST
# org.hibernate.transaction.level=FINEST

jbpm.cfg.xml

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

<jbpm-configuration>

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

  <!-- Job executor is excluded for running the example test cases. -->
  <!-- To enable timers and messages in production use, this should be included. -->
  <!--
  <import resource="jbpm.jobexecutor.cfg.xml" />
  -->

</jbpm-configuration>

java代码

package cn.edu.zust.itee;

import java.util.List;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.task.Task;
import org.junit.Test;

/**
 * @author 郑勇
 * 2013-07-09 10:43
 */
public class HelloWord {
	
	ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

	//初始化:建表(创建18张)
	@Test
	public void createSchema(){
		new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory();
		
	}
	
	//一、部署流程定义(jbpm4_lob和jbpm4_deployment拥有数据)
	@Test
	public void deployProcessDefinition(){
		
		processEngine.getRepositoryService()
					 .createDeployment()
					 .addResourceFromClasspath("helloword/test.jpdl.xml")
					 .addResourceFromClasspath("helloword/test.png")
					 .deploy();
	}
	
	//二、启动流程定义(jbpm4_execution拥有数据)
	@Test
	public void startProcessInstance(){
		processEngine.getExecutionService().startProcessInstanceByKey("test");
	}
	
	//三、查询我的未办理的任务列表
	@Test
	public void findMyTaskList(){
		//查询任务
		String usrid = "员工";
//		String usrid = "部门经理";
//		String usrid = "总经理";
		List<Task> list = processEngine.getTaskService().findPersonalTasks(usrid);
		
		System.out.println("============="+usrid+"未办理的任务列表=============");
		//显示任务
		for(Task task:list){
			System.out.println("id="+task.getId()+",name="+task.getName()+",assignee="+task.getAssignee()+",createTime="+task.getCreateTime());
		}
	}
	
	//四、办理完成任务
//	id=10002
//	id=20001
//	id=30001
	@Test
	public void completeTask(){
		String userid = "30001";
		processEngine.getTaskService().completeTask(userid);
	}
	
	//任务全部执行完,表jbpm4_execution记录删除,jbpm4_hist_procinst表显示历史记录
}

流程定义

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

<process name="test" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="37,3,48,48" name="start1">
      <transition g="-52,-22" name="to 提交申请" to="提交申请"/>
   </start>
   <task assignee="员工" g="16,96,92,52" name="提交申请">
      <transition g="-52,-22" name="to 部门经理审批" to="部门经理审批"/>
   </task>
   <task assignee="部门经理" g="16,180,92,52" name="部门经理审批">
      <transition g="-52,-22" name="to 总经理审批" to="总经理审批"/>
   </task>
   <task assignee="总经理" g="16,264,92,52" name="总经理审批">
      <transition g="-50,-22" name="to end1" to="end1"/>
   </task>
   <end g="38,348,48,48" name="end1"/>
</process>

流程图

java中jbpm工作流_java activity工作流
数据库

java中jbpm工作流_java activity工作流

Jbpm工作流活动介绍:

  1.预定义活动
  开始活动 Start
  结束活动 End   
  状态活动 State (cn.zust.edu.itee.state.ProcessStateActivity.java)
   
  任务活动 Task  (cn.edu.zust.itee.task.TaskVariable.java)
         个人 任务分配:
     *  1.使用流程变量: assignee=”#{manager}” 在Expression设置#{manager}
        *  2.使用类处理AssignmentHandler :assignable.setAssignee(userId);
        *  3.TaskService.assignTask(taskId,userId);
  组任务活动分配      (cn.edu.zust.itee.groupTask.GroupTaskVariable.java)
*  1.使用流程变量: candidate-users=”#{userIdsString}” 在Expression设置#{userIdsString}(String类型的变量,多用户用”,”分隔)
  *  2.使用类处理AssignmentHandler :assignable.addCandidateUser(userId);
  *  3.processEngine.getTaskService().addTaskParticipatingUser(taskId, userId, Participation.CANDIDATE);                
         
               判断活动 Decision  (cn.zust.edu.itee.decision.ProcessDecisionActivity.java)
        *  1.实现DecisionHandler接口
              
               分支/聚合        Fork/Join (cn.edu.zust.itee.joinFork.JoinFork.java)
    
    2.自定义活动  Custom
        * Custom活动 + ExternalActivityBehaviour接口
    
    
    demo源代码下载地址:http://download.csdn.net/detail/zhengyong15984285623/5747773
    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195531.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月15日 下午2:15
下一篇 2025年10月15日 下午2:43


相关推荐

  • vue父子组件传值的三种完整方式

    vue父子组件传值的三种完整方式非父子组件之间传值 需要定义个公共的公共实例文件 bus js 作为中间仓库来传值 不然路由组件之间达不到传值的效果

    2026年3月17日
    1
  • 消息中间件MQ与RabbitMQ面试题(2020最新版)

    消息中间件MQ与RabbitMQ面试题(2020最新版)文章目录为什么使用MQ?MQ的优点消息队列有什么优缺点?RabbitMQ有什么优缺点?你们公司生产环境用的是什么消息中间件?Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?MQ有哪些常见问题?如何解决这些问题?什么是RabbitMQ?rabbitmq的使用场景RabbitMQ基本概念RabbitMQ的工作模式如何保证RabbitMQ消息的顺序性?消息如何分发?消…

    2022年4月29日
    57
  • 数字水印综述

    数字水印综述目录 1 1 数字水印技术发展历史 1 2 水印检测 1 3 数据恢复阶段 1 4 性能影响 1 4 1 水印嵌入算法性能 1 4 2 水印检测计算性能 1 4 3 数据恢复算法的计算性能 1 4 4 水印隐藏率 1 4 5 水印容量性能 1 4 6 小结 2 1 关系数据可逆水印参生的问题以及解决办法 2 1 1 小结 3 总结 4 数据溯源参考论文 1 上图是关系数据库的水印模型水印生成 将一些有意义的图像 声音或者文字处理转变水印嵌入 水印嵌入的前提是不影响数据使用 位置由 MAC 决定水印攻击 常见的水印攻击有元组添加 删除 修改攻击

    2026年3月17日
    2
  • 良心推荐JVM性能调优工具

    良心推荐JVM性能调优工具良心推荐JVM性能调优工具该工具源于几年前关注的一个阿里大佬专做jvm性能调优,现在已经创业开发出社区版的在线性能调优!我觉得很香就推荐给大家!工具地址https://console.perfma.com/下面简单介绍社区版三个产品XXFox-Java虚拟机参数分析参数查询:查询指定JVM参数的官方定义、使用方法、默认值、专家建议参数检查:对JVM参数的用法,赋值及组合进行正确性与合理性检查参数变迁:给出JVM参数在不同配置环境下推荐取值或替代参数参数优化:全面诊断JVM参数,给出综

    2022年5月18日
    39
  • 硬件接口之Camera DVP「建议收藏」

    硬件接口之Camera DVP「建议收藏」Camera的并口传输方式很多地方叫做dvp接口,但是并没有统一的标准。MIPI接口比DVP的接口信号线少,由于是低压差分信号,产生的干扰小,抗干扰能力也强。最重要的是DVP接口在信号完整性方面受限制,速率也受限制。500W还可以勉强用DVP,800W及以上都采用MIPI接口。1.DVP的信号脚名称及作用:PCLK:pixelclock,像素时钟,每个时钟对应一个像素数据;HSYNC:horizonalsynchronization,行同步信号VSYNC:verticalsynchro

    2022年5月2日
    72
  • OpenClaw技术全解析:从架构到云端部署的完整指南

    OpenClaw技术全解析:从架构到云端部署的完整指南

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号