ACTIVITI如何获取下一步节点

ACTIVITI如何获取下一步节点,第1张

1、首先是根据流程ID获取当前任务

List<Task> tasks = taskServicecreateTaskQuery()processInstanceId(procInstanceId)list();

2、然后根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:

ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rs)getDeployedProcessDefinition(taskgetProcessDefinitionId());

List<ActivityImpl> activitiList = defgetActivities(); //rs是指RepositoryService的实例

3、根据任务获取当前流程执行ID,执行实例以及当前流程节点的ID:

String excId = taskgetExecutionId();

ExecutionEntity execution = (ExecutionEntity) runtimeServicecreateExecutionQuery()executionId(excId)singleResult();

String activitiId = executiongetActivityId();

4、然后循环activitiList 并判断出当前流程所处节点,然后得到当前节点实例,根据节点实例获取所有从当前节点出发的路径,然后根据路径获得下一个节点实例:

for(ActivityImpl activityImpl:activitiList){

String id = activityImplgetId();

if(activitiIdequals(id)){

Systemoutprintln("当前任务:"+activityImplgetProperty("name")); //输出某个节点的某种属性

List<PvmTransition> outTransitions = activityImplgetOutgoingTransitions();//获取从某个节点出来的所有线路

for(PvmTransition tr:outTransitions){

PvmActivity ac = trgetDestination(); //获取线路的终点节点

Systemoutprintln("下一步任务任务:"+acgetProperty("name"));

}

break;

}

}

Activiti工作流总共包含23张数据表,所有的表名默认以“ ACT_ ”开头。并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配

用来保存部署文件的大文本数据。

保存流程定义和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也一起部署到该表中,会造成一些错误(可能导致流程定义无法删除)。

属性数据表。存储这个流程引擎级别的数据。

历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容。

附件信息

历史审批意见表

历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。

任务参与者数据表。主要存储历史节点参与者的信息。

历史流程实例信息

历史任务流程实例信息

历史变量信息

用户组表,用来存储用户组信息。

用户扩展信息表。

用来保存用户的分组信息

用户信息表

部署信息表, 用来存储部署时需要持久化保存下来的信息

流程设计模型表,创建流程的设计模型时,保存在该数据表中。

流程解析表,解析成功了,在该表保存一条记录。业务流程定义数据表

运行时事件

运行时流程执行实例,我的代办任务查询表

身份联系,主要存储当前节点参与者的信息,任务参与者数据表。

运行时定时任务数据表

运行时任务数据表

运行时流程变量数据表

activiti中内嵌子流程(call activity)是新启动一个流程,该子流程和父流程没有父子关系。该子流程的proc_inst_id_的parent_id_是空的。如果想要获取父流程的proc_inst_id_,可以通过执行环境(id_)和父执行环境(super_exec_)来获取。上述字段都是act_ru_execution表中。

配置子流程start监听器,监听器中去获取父流程实例ID

表中第三条记录是流程实例ID为 2830018 ,执行环境ID为 2830018 的子流程记录。该记录的父执行环境ID为 2830016 ,通过父执行环境ID定位到第二条记录,从而获取父流程实例ID 2830001

Get Parent ProcessInstance Id from a SubProcess CallActivity

在查询流程实例时,通过 businessKey(业务标识 )关联查询业务系统的请假单表,查询出请假天

数等信息。

*** 作流程定义为挂起状态,该流程定义下边所有的流程实例全部暂停:

流程定义为挂起状态该流程定义将不允许启动新的流程实例,同时该流程定义下所有的流程实例将

全部挂起暂停执行。

*** 作流程实例对象,针对单个流程执行挂起 *** 作,某个流程实例挂起则此流程不再继续执行,完成

该流程实例的当前任务将报异常。

讲bpmn流程文件中节点的assignee 使用UEL表达式赋值( ${assignee0} )

任务监听器是发生对应的任务相关事件时执行自定义 java 逻辑 或表达式。

Create:任务创建后触发

Assignment:任务分配后触发

Delete:任务完成后触发

All:所有事件发生都触发

定义任务监听类,且类必须实现 orgactivitienginedelegateTaskListener 接口

在部门经理审核前设置流程变量,变量值为请假单信息(包括请假天数),部门经理审核后可以根据

流程变量的值决定流程走向。

通过流程实例 id 设置全局变量,该流程实例必须未执行完成。

任务办理时设置 local 流程变量,当前运行的流程实例只能在该任务结束前使用,任务结束该变量无

法在当前流程实例使用,可以通过查询历史任务查询。

注意:

任务 id 必须是当前待办任务 id,act_ru_task 中存在。

Activiti中提供了多实例任务(for-each)将多实例应到到UserTask中可以实现会签功能。一多实例用户任务的XML表示:Xml代码assigneeList${nrOfCompletedInstances/nrOfInstances>=06}assigneeList${nrOfCompletedInstances/nrOfInstances>=06}在每个多实例创建后都会有3个变量nrOfInstances实例总数nrOfActiveInstances当前还没有完成的实例nrOfCompleteInstances已经完成的实例个数multiInstanceLoopCharacteristics是用了指定用户任务为多实例任务,isSequential指定多实例是按照并行或者串行的方式进行,如果使用串行方式nrOfActiveInstances变量始终是1loopDataInputRef指定一个流程变量的引用,该变量是一个List,可以在发起或这执行任务之前作为流程变量放到引擎中,该list中的每一个元素将创建一个任务。元素的值通过inputDataItem元素的指定的变量来获取如在这个实例中assigneeList=ArraysasList("liyagn","cooperay","other");这会创建3个用户任务,每个用户任务中都有一个assignee的变量,来分别得到list中的值。completionCondition结束任务的条件,该示例中是任务完成60%结束二给用户任务指定代理人xml表示:Xml代码liyangliyang上面的描述将该用户任务分配给用户liyang可以通过taskServicecreateTaskQuerytaskAssignee("liyang")list();来获取该任务三通过上面两部将用户任务做成了多任务,也可以将任务分配给指定的代理人,现在只用将上面两个步骤进行结合在第一步中我们知道变量assignee是会签人员的标识,只需要将指定代理人的地方用表达式来指定assignee变量就行了完整XML:Xml代码${assignee}assigneeList${nrOfCompletedInstances/nrOfInstances>=06}${assignee}assigneeList${nrOfCompletedInstances/nrOfInstances>=06}完工。

1BPMN 20模式的根元素是definitions元素。

多实例相关属性,以eclipse中的可视化图形 *** 作为例

Multil instance:

Sequential:执行顺序。必选项,可选值有true、false。用于设置多实例的执行顺序。True:多实例顺序执行,false:多实例并行

loop cardinality:循环基数。可选项。可以直接填整数,表示会签的人数。

Collection:集合。可选项。会签人数的集合,通常为list。和loop cardinality二选一

Element variable:元素变量。选择Collection时必选,为collection集合每次遍历的元素

Completion condition:完成条件。可选。Activiti会签有个特性,比如设置一个人完成后会签结束,那么其他人的代办任务都会消失。

>

以上就是关于ACTIVITI如何获取下一步节点全部的内容,包括:ACTIVITI如何获取下一步节点、工作流Activiti表说明、call activity 获取父流程实例ID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9501160.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存