![](https://img-blog.csdnimg.cn/a5ba51240f8b49ed8659c8f8cad0e36c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Activiti
文章平均质量分 66
以源码解析实战为主的系列教程文章
牛分享
分享我们是快乐的,写代码我们是认真的
展开
-
activiti源码解析系列9 - 完成特别子流程命令类
特别子流程如何完成呢?通过runtimeService.completeAdhocSubProcess(String executionId)主要看命令类CompleteAdhocSubProcessCmd:看代码:public Void execute(CommandContext commandContext) { ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntity.原创 2022-04-19 21:26:12 · 810 阅读 · 0 评论 -
activiti源码解析系列8 - 任务完成命令类
我们在完成任务的时候都执行了哪些操作呢?主要涉及删除表(默认非级联):ACT_RU_TASKACT_RU_IDENTITYLINKACT_RU_VARIABLE主要看一个CompleteTaskCmd:protected Void execute(CommandContext commandContext, TaskEntity task) { // Backwards compatibility if (task.getProcessDefinitionId()原创 2022-04-18 20:52:07 · 1344 阅读 · 0 评论 -
activiti源码解析系列7 - 启动流程实例命令类源码解析
启动流程实例涉及到的表有:1、创建流程实例类型的执行实例入库ACT_RU_EXECUTION;2、启动人入库ACT_RU_IDENTITYLINK starter类型;3、历史启动实例记录(入库ACT_HI_PROCINST表)4、dataObjects kv变量设置到流程实例变量map里 (存db(ACT_HI_VARINST历史变量实例表)或者更新缓存)5、设置变量入库(入库ACT_RU_VARIABLE\(审计记录:入库ACT_HI_VARINST表)6、针对事件子流程:ACT_RU_原创 2022-04-18 20:46:38 · 1841 阅读 · 0 评论 -
activiti源码解析系列6 - bpmn部署器BpmnDeployer源码解析
流程的部署主要通过DeployCmd类进行:查看部分核心代码:public Deployment execute(CommandContext commandContext) { // Backwards compatibility with Activiti v5 //activiti5兼容开启 if (commandContext.getProcessEngineConfiguration().isActiviti5CompatibilityEnabled()原创 2022-04-16 20:24:47 · 1334 阅读 · 0 评论 -
activiti源码解析系列5 - 流程文件的部署
我们的bpmn xml文件是如何通过引擎进行部署的呢?文章概要: 1.bpmnParser解析器与解析处理器的初始化(关联bpmnParse工厂(核心)) 2.deploymentManager部署管理器的初始化与bpmnParser解析器的关联 3.仓库服务进行部署的调用(通过deploymentManager)1、bpmn解析器及解析处理器的初始化我们首先看ProcessEngineConfigurationImpl的init方法里initBpmnParser()方法:原创 2022-04-16 17:03:05 · 1473 阅读 · 0 评论 -
activiti源码解析系列4 - 包含网关行为类InclusiveGatewayActivityBehavior源码解析
看该类源码:public class InclusiveGatewayActivityBehavior extends GatewayActivityBehavior implements InactiveActivityBehavior { private static final long serialVersionUID = 1L; private static Logger logger = LoggerFactory.getLogger(InclusiveGatewayActivit原创 2022-04-14 21:44:40 · 991 阅读 · 0 评论 -
activiti源码解析系列3 - 命令拦截器责任链
通过initCommandExecutor()构建的命令执行器CommandExecutorImpl,在该类里进行了命令责任链的first及后续调用执行。在基本activiti提供的所有service方法接口里就是通过命令传入该命令执行器进行后续的执行和调用。原创 2022-04-14 21:41:56 · 609 阅读 · 0 评论 -
activiti源码解析系列2 - 引擎作业处理器源码分析
主要涉及类:一系列JobHandler用于job的处理、JobManager用于job的入库调度激活挂起等操作、asyncExecutor用于job的异步执行(通过线程池实现、和3个死循环的线程用于扫描job表操作调度job)首先查看引擎配置初始化类ProcessEngineConfigurationImpl的init方法:原创 2022-04-14 21:30:03 · 1311 阅读 · 0 评论 -
activiti源码解析系列1 - 引擎计划ActivitiEngineAgenda
activiti之引擎计划ActivitiEngineAgenda我们知道activti6基本是基于责任链和命令模式实现,但底层是如何进行命令的执行和流程的驱动流转的呢?原创 2022-04-14 21:14:50 · 1448 阅读 · 0 评论 -
activiti入门系列文章14 - 集成规则引擎drools
activiti入门系列文章14 - 集成规则引擎drools原创 2022-04-14 21:10:10 · 1182 阅读 · 0 评论 -
activiti入门系列文章12 - 设计模式
activiti之设计模式原创 2022-04-14 20:38:53 · 509 阅读 · 0 评论 -
activiti入门系列文章11 - 用户集成
activiti之用户集成原创 2022-04-14 20:34:30 · 860 阅读 · 0 评论 -
activiti入门系列文章10 - 自动跳过第一个节点
在Activiti流程设计中,为了使流程展示的更加完善,经常会将流程图的第一步任务设计成“提交任务”,例如:申请人启动流程后,流程就会到达“提交任务”,而“提交任务”的办理人还是该申请人,这个时候就需要通过代码跳过(自动处理)该任务节点,让流程流转到下一任务节点。有三种方法可以处理这个问题。第一种方式:在启动流程后,获取当前流程实例申请人的待办任务,并执行当前流程实例的下一步任务Task task = null;TaskQuery query = taskService.createT.原创 2022-04-09 20:00:00 · 2270 阅读 · 1 评论 -
activiti入门系列文章9 - 委派与转办
委派与转办1、委派委派:是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中将hr的任务进行委派:taskService.delegateTask(taskId, userId);// taskId 任务id; userId:被委派人id被委派人办理任务后:taskService.resolveTask(taskId,variables);正在运行的任务表中被委派人办理任务后hr的任务会回到委派人xxhr ,历史任务表中也一样,只...原创 2022-04-08 20:00:00 · 3102 阅读 · 0 评论 -
activiti入门系列文章8 - 相关表与操作说明
Activiti数据库表原创 2022-04-07 20:00:00 · 2203 阅读 · 1 评论 -
activiti入门系列文章7 - 中国流程任意跳转
工作流引擎之activiti6流程节点自由跳转实现在中国式的流程需求中,诸如驳回,退回功能需要进行流程跳转,比如领导审批不通过,退回到申请人。这种中国式的流程需求,可以通过以下三种方式实现1、通过流程图设计,新增一条驳回连接线,并在连接中配置一些条件进行跳转。通常业务口更希望不需要再额外添加连接线就能实现跳转。2、动态修改流程定义环节的连线,然后执行跳转,完成后再恢复流程定义。 这种方法可以实现动态跳转,不需要修改Activiti自身执行,但是会动态修改系统中的流程定义缓存对象。理论上这会出现一原创 2022-04-06 20:00:00 · 1276 阅读 · 0 评论 -
activiti入门系列文章6 - Process流程配置
Process标签配置通过源码查看该类有哪些属性:public class Process extends BaseElement implements FlowElementsContainer, HasExecutionListeners { protected String name; //可执行 protected boolean executable = true; protected String documentation; protected IOSpecifi原创 2022-04-05 20:00:00 · 756 阅读 · 0 评论 -
activti入门系列文章5 - 监听器
开始结束事件为ExecutionListener(event=start,end)任务事件可以为TaskListener(event=create,assignment,complete,all)或ExecutionListener(event=start,end)监听器类型:create: 任务创建且所有任务属性设置完全之后触发。assignment: 任务分配给某个班里人之后触发,并在create之后。complete: 任务完成时触发,在运行时任务数据被删除之前触发(act_ru_原创 2022-04-01 20:00:00 · 1253 阅读 · 0 评论 -
actviti入门系列文章4 - 事件元素
activiti中主要有开始启动事件StartEvent,结束事件EndEvent开始事件用于一个流程的开始节点开始启动事件的四种类型:1.空启动事件 2.定时启动事件 3.消息、信号启动事件 4.异常启动事件StartEventTimerStartEventMessageStartEventSignalStartEvent一、StartEvent面板介绍1.General面板Asynchronous : 是否异步(默认否)表示是否能被异步执行。Excl.原创 2022-03-31 20:00:00 · 596 阅读 · 0 评论 -
activti入门系列文章3 - SequenceFlow连线元素
SequenceFlow属性:skip expression 跳过表达式 。到当前任务时自动跳过任务condition可设置表达式决定走哪个分支前提:给第一个需要跳过的任务中也添加一个ExecutionListenerimport com.edu.hart.modules.constant.ActivitiConstanct;import org.activiti.engine.delegate.DelegateExecution;import org.activiti.en.原创 2022-04-04 20:00:00 · 544 阅读 · 0 评论 -
activti入门系列文章2 - 网关元素
activiti网关原创 2022-04-03 20:00:00 · 556 阅读 · 0 评论 -
activiti入门系列文章1 - 任务元素
任务是activiti三大元素之一,主要有UserTask 人工任务ScriptTask 服务任务ServiceTaskMailTaskManualTaskReceiveTaskBusinessRuleTaskCallActivity其中,UserTask用户任务最为常用。1.用户任务 UserTask看代码:public class UserTask extends Task { /** * 被分配到任务的人 * (受理人):task任务的原创 2022-04-02 20:00:00 · 1381 阅读 · 0 评论