activiti

Activiti7官方博客翻译7——原生BPMN云支持

十年热恋 提交于 2020-04-24 14:06:10
BPMN规范描述了业务流程定义中允许的大量构造(BPMN元素)。 同时在Activiti 5. x和6. x中支持此功能,且Activiti 5. x和6. x 都是由该流程引擎完成的,在Activiti Cloud (Activiti Core 7.x)中支持较少的元素,因为我们现在处理的是一个分布式的、高度可伸缩的基础设施。 定时器、信号和消息等元素现在需要与基础设施和其他服务进行交互才能正确工作。 出于这个原因,Activiti Cloud的第一个版本选择了这些元素的一个子集合来构建一个坚实的基础,该基础可以确保在分布式环境中一组组件之间的执行如预期的那样进行,并且可以在出现问题时进行监视和跟踪。 作为该计划的一部分,我们定义了comformance集来验证由BPMN元素的不同组合组成的不同用例。 这些舒适性测试同时使用新的Java API和云原生API来验证所有组件的正确行为。 您可以在这里找到一致性场景。 7.1.x中支持的BPMN元素列表 为: 开始/结束事件 SequenceFlows(条件,默认) 服务任务 用户任务(受让人、candidateUsers、candidateGroups) 网关:并行、排他、包容 调用活动 信号中间捕获事件,信号中间抛出事件,信号边界事件 嵌入式子流程 这些BPMN元素目前在Activiti Modeler应用程序中可用

基于事件的网关 Event­based Gateway

回眸只為那壹抹淺笑 提交于 2020-04-24 14:05:18
基于事件的网关 Event­based Gateway 作者:Jesai 时间:2018年4月21日 21:19:30 什么是事件网关? 基于事件的网关,允许基于事件做选择。 事件网关的执行原理? 网关的每一条出口顺序流,都需要连接至一个捕获中间事件。当流程执行到达基于事件的网关时,网关类似等待状态地动作:执行被暂停。并且,为每一条出口顺序流,创建一个事件订阅。流程的走向完全是由于中间事件的选择。而由哪一个事件来决定流程的走向则是由最先触发的事件来决定的。 事件网关和其他网关的区别 请注意基于事件的网关,其出口顺序流与一般的顺序流不同。这些顺序流从不实际被执行。相反,它们允许流程引擎决定,当执行到达一个基于事件的网关时,需要订阅什么事件。 约束: 1)一个基于事件的网关,必须有两条或更多的出口顺序流。 2)基于事件的网关,只能连接至 intermediateCatchEvent(捕获中间事件) 类型的元素(Activiti不支持基于事件的网关后,连接接收任务,Receive Task)。 3)连接至基于事件的网关的 intermediateCatchEvent ,必须只有一个入口顺序流。 图标: 基于事件的网关,用内部带有特殊图标的网关(菱形)表示。 定义: 用于定义基于事件的网关的XML元素为 1 eventBasedGateway 。 流程设计 我们设计一个有三个走向(分支

【Activiti学习之五】BPMN事件

馋奶兔 提交于 2020-04-24 14:04:33
环境   JDK 1.8   MySQL 5.6   Tomcat 7   Eclipse-Luna   activiti 6.0 一、事件定义 1、定时器事件 (1)timeDate:指定时间触发 <timerEventDefinition> <timeDate>2019-09-12T07:30:00</timeDate> </timerEventDefinition> ISO8601时间格式,如果要加时间需要前面加T。 (2)timeDuration:指定一个时间段之后执行 <timerEventDefinition> <timeDuration>PT1S</timeDuration> </timerEventDefinition> S表示秒,M表示分,D表示天;P表示时间段,T表示精确到时间的时间段; (3)timeCycle:指定定时器的运行周期 <timerEventDefinition> <timeCycle>R2/PT1M</timeCycle> </timerEventDefinition> R表示需要执行的次数,R2/PT1M表示执行两次,每次持续1分钟 支持cron表达式:秒 分钟 小时 月份中的日期 月份 星期中的日期 年份 2、错误事件 处理流程中出现的异常。 举例: <error id="myerror" errorCode="123"></error>

Activiti学习之 多实例实现会签功

我是研究僧i 提交于 2020-04-24 14:02:24
转: Activiti学习之 多实例实现会签功能 2014年11月26日 11:27:11 程诺 阅读数:26185 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chq00788/article/details/41513451 一个任务需要多个角色进行审批或者表决,根据这些审批结果来决定流程的走向。实现以上任务,activiti已经提供了支持,可以使用BPMN规范的多实例活动来实现。 1.Activiti多实例: 多实例节点 是在业务流程中定义重复环节的一个方法。 从开发角度讲,多实例和 循环 是一样的: 它可以根据给定的集合,为每个元素执行一个环节甚至一个完整的子流程, 既可以顺序依次执行也可以并发同步执行 。 多实例 是在一个普通的节点上添加了额外的属性定义 (所以叫做 '多实例 特性'),这样运行时节点就会执行多次。 下面的节点都可以成为一个 多实例节点: User Task Script Task Java Service Task Web Service Task Business Rule Task Email Task Manual Task Receive Task (Embedded) Sub-Process Call Activity 根据规范的要求,每个上级流程为每个实例创建分支时都要提供如下变量:

Springboot+SpringCloud项目脚手架

时间秒杀一切 提交于 2020-04-24 13:35:45
系统介绍 spring-cloud-plus 是以spring-cloud-alibaba为基础并整合一些常用框架的分布式基础开发平台。 项目以组件模块的方式构建,实现项目模块可插拔组装。工作中遇到的一些常用框架,我都会整合到此项目,并持续更新。 项目地址 https://gitee.com/gourd-hu/spring-cloud-plus https://github.com/hxnlyw/spring-cloud-plus 目标 成为一个简单易用、快速高效、功能丰富、安全稳定的分布式项目脚手架。 让每个人都可以独立、快速、高效地开发一套分布式项目! 技术架构图 技术栈 基础:springboot + springcloud 持久化:MybatisPlus 连接池:Druid 数据库:Mysql 项目构建:Maven API网关: Gateway 日志:Logback 注册、配置中心: Nacos 服务调用: Feign + Ribbon 熔断、降级:Sentinel 分布式事务:Seata 分布式锁:Redisson 鉴权: Shiro + jwt-token 缓存: Redis、springCache 工作流:Activiti 定时任务: Quartz 消息中间件:ActiveMq 文件操作:FastDFS、EasyExcel 搜索存储引擎:Elasticsearch

Activiti触发消息事件实战

本小妞迷上赌 提交于 2020-04-24 13:09:55
一 代码 /** * Copyright (C), 2020-2020, 软件公司 * FileName: MessageEvent.java * Author: cakin * Date: 2020/4/23 * Description: messageEventReceived触发消息事件 */ package com.syc.activiti.chapter9; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.Execution; /** * @className: MessageEvent * @description: messageEventReceived触发消息事件 * @date: 2020/4/23 * @author: cakin */ public class MessageEvent { public static void main( String[] args ) { // 创建流程引擎

Activiti触发信号事件实战

前提是你 提交于 2020-04-24 13:09:09
一 代码 /** * Copyright (C), 2020-2020, 软件公司 * FileName: SignaleEventReceived.java * Author: cakin * Date: 2020/4/23 * Description: signaleEventReceived方法触发信号事件 */ package com.syc.activiti.chapter9; import java.util.List; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; /** * @className: SignaleEventReceived * @description: signaleEventReceived方法触发信号事件 * @date: 2020/4/23 *

Activiti的receive Task实战

随声附和 提交于 2020-04-24 13:07:49
一 代码 /** * Copyright (C), 2020-2020, 软件公司 * FileName: Trigger.java * Author: cakin * Date: 2020/4/23 * Description: receiveTask流程执行 */ package com.syc.activiti.chapter9; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; /** * @className: Trigger * @description: receiveTask流程执行 * @date: 2020/4/23 * @author: cakin */ public class Trigger { public static void main( String[] args

Activiti流程参数实战

有些话、适合烂在心里 提交于 2020-04-22 13:35:29
一 代码与数据库变化 /** * Copyright (C), 2020-2020, 软件公司 * FileName: SetVariableLocal.java * Author: cakin * Date: 2020/4/21 * Description: 流程参数作用域 */ package com.syc.activiti; import java.util.List; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; /** * @className: SetVariableLocal * @description: 流程参数作用域

Activiti的附件管理实战

孤街醉人 提交于 2020-04-22 01:01:34
一 代码 /** * @className: GetAttachment * @description: 任务附件查询 * @date: 2020/4/20 * @author: cakin */ package com.syc.activiti; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.ProcessInstance