JBPM(三)--- JPDL 流程定义语言

JPDL 全称JBossjBPMProcessDefinitionLanguage,是JBPM的流程定义语言。JPDL流程定义语言主要掌握以下几种: 1.process (流程) 2.transition (连线、转移) 3.start (开始活动) 4.end、end-error、end-cancel (结束活动) 5.state (状态活动) 6.task (任务活动) 7.dec
摘要由CSDN通过智能技术生成

JPDL 全称JBossjBPMProcessDefinitionLanguage,是JBPM的流程定义语言。

JPDL流程定义语言主要掌握以下几种:
1.process (流程)
2.transition (连线、转移)
3.start (开始活动)
4.end、end-error、end-cancel (结束活动)
5.state (状态活动)
6.task (任务活动)
7.decision (判断活动)
8.fork、join (分支/聚合活动


顶级元素 process 定义
这里写图片描述

name用于显示,通常定义中文
key 用于代码操作,通常定义英文
version 版本号,不指定,相同key流程,version自动+1(如果指定version不要和其它冲突)
在 jbpm4_deployprop 生成 pdId 流程定义id = pdKey + “-” + pdVersion
发布流程保证,key和name 完全相同

代码示例:
process.jpdl.xml

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

<process key="process" name="测试流程" xmlns="http://jbpm.org/4.4/jpdl">
	<!-- 根节点 -->
   <start g="235,30,48,48" name="start1">
      <transition g="-47,-17" name="to 请假" to="请假"/>
   </start>
   <end g="251,315,48,48" name="end1"/>
   <task g="223,128,92,52" name="请假">
      <transition g="-47,-17" name="to 审批" to="审批"/>
   </task>
   <task g="231,211,92,52" name="审批">
      <transition g="-47,-17" name="to end1" to="end1"/>
   </task>
</process>

ProcessTest.java

package com.my.jbpm.jpdl;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
import org.junit.Test;

public class ProcessTest {
	
	@Test
	// 发布process.jpdl.xml
	public void demo(){
		//流程引擎
		ProcessEngine processEngine = new Configuration().buildProcessEngine();
		//获得Service
		RepositoryService repositoryService = processEngine.getRepositoryService();
		//发布
		repositoryService.createDeployment().addResourceFromClasspath("process.jpdl.xml").deploy();
	}

}


Transition 节点(流转节点)
一个活动中可以指定一个或多个transition
开始活动只能有一个transition
结束活动没有 transition
其它活动可以有1条或者多条transition

如果只有一个,可以不指定名称,如果有多个,则要分别指定唯一名称
无名称transition
executionService.signalExecutionById(executionId)
有名称transition
executionService.signalExecutionById(executionId, transitionName)

定义transition元素,可以不写name属性,成为默认transition节点
在向后流转时,如果没有transition的name属性,将使用 默认transition节点(没有name属性的transition )

代码示例:
transition.jpdl.xml

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

<process name="transition" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="280,9,48,48" name="start1">
      <transition g="-53,-17" name="to task1" to="task1"/>
   </start>
   <end g="290,299,48,48" name="end1"/>
   <task g="269,89,92,52" name="task1">
   	  <!-- 没有name的transition成为 默认transition -->
      <transition to="task2"/>
      <transition g="-53,-17" name="to task3" to="task3"/>
   </task>
   <task g="157,182,92,52" name="task2">
      <transition g="-47,-17" name="to end1" to="end1"/>
   </task>
   <task g="376,186,92,52" name="task3">
      <transition g="-47,-17" name="to end1" to="end1"/>
   </task>
</process>

TransitionTest.java

package com.my.jbpm.jpdl;

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

public class TransitionTest {
	
	@Test
	//发布 启动 transition.jpdl.xml
	public void demo1(){
		//流程引擎
		ProcessEngine processEngine = new Configuration().buildProcessEngine();
		//发布流程 
		processEngine.getRepositoryService().createDeployment().addResourceFromClasspath("transition.jpdl.xml").deploy();
		//启动实例
		processEngine.getExecutionService().startProcessInstanceByKey("transition");
	}
	
	@Test
	//完成task1 任务
	public void demo2(){
		//流程引擎
		ProcessEngine processEngine = new Configuration().buildProcessEngine();
		//向后流转
		//processEngine.getExecutionService().signalExecutionById("transition.10007"); // 没有指定name 使用默认transition
		 processEngine.getExecutionService().signalExecutionById("transition.10007","to task3");// executionId 在 execution表 ID_
	}

}


start和end 节点
start 开始活动
代表流程的开始边界,一个流程有且只能有一个Start活动。开始活动只能指定一个Transition。在流程实例启动后,会自动的使用这个唯一的Transition离开开始活动,到一下个活动

end 结束活动
代表流程的结束边界,可以有多个,也可以没有。如果有多个,则到达任一个结束活动,整个流程就都结束了;如果没有,则到达最后那个没有Transition的活动,流程就结束了

中止流程代码
processEngine.getExecutionService().endProcessInstance(processInstanceId, ProcessInstance.STATE_ENDED);
在任意节点,都能够结束流程


state 节点 (状态节点,当前状态发生改变,向后流转)
State节点,等待含义,当服务器处理一些数据后,实现自动触发流转 executionService.signalExecutionById

代码示例:
state.jpdl.xml

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

<process name="state" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="264,13,48,48&#
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值