[Activiti] UEL 统一表达式语言 (任务节点 Assignee 通过变量获取)

UEL是java EE6规范的一部分,UEL(Unified Expression Language)即统一表达式语言,activiti支持两个UEL表达式:UEL-value和UEL-method。

用处:在流程中设置变量或者设置调用的方法,在流程运行到该节点的时候就会调用方法来执行。

1. UEL Value:

1.1 基本类型

首先我们设置节点

在启动代码时动态设置assignee的值

String processDefinitionKey = "purchasingflow";
//设置其启动的全局变量参数,其value可以是javabean,也可以是普通字符串,数字
Map<String,Object> variables = new HashMap<String, Object>();
variables.put("assignee", "feige");
//设置流程启动时,设置参数启动
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey,variables);

1.2 对象

${user.userId}
public class User implements Serializable{
    /**
     * 用于序列化
     */
    private static final long serialVersionUID = 7717000074223077256L;
    private String userId;
}

String processDefinitionKey = "purchasingflow";

//设置其启动的全局变量参数,其value设置为user对象,这里写死
User user = new User("101","男","张三");

Map<String,Object> variables = new HashMap<String, Object>();
variables.put("user", user);
//设置流程启动时,设置参数启动
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey,variables);

2. UEL Method

	/**
	 * ${leaveProcessAssignService.updateBizStatus(execution,"hr",variable)}
	 * @param execution 可以获取流程或者任务节点信息
	 * @param constant 表达式中的固定值
	 * @param variable 获取流程中的变量中的值,取法同URL-Value中的基本类型
	 */
	public void updateBizStatus(DelegateExecution execution,String constant,String variable) {	
	}

设置变量就不在这里说了。

Activiti 7 中,获取上一个任务节点任务可以通过历史任务查询实现。可以通过以下步骤来获取上一个任务节点任务: 1. 首先,获取当前任务的 ID。可以使用以下代码获取当前任务的 ID: ```java String currentTaskId = runtimeService.createProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult() .getId(); ``` 其中,`processInstanceId` 是当前流程实例的 ID。 2. 然后,使用当前任务 ID 查询历史任务。可以使用以下代码查询历史任务: ```java List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() .processInstanceId(processInstanceId) .orderByHistoricTaskInstanceEndTime() .desc() .list(); ``` 其中,`processInstanceId` 是当前流程实例的 ID。使用 `orderByHistoricTaskInstanceEndTime().desc()` 可以按照任务结束时间倒序排列历史任务。 3. 最后,找到上一个任务节点任务。可以遍历历史任务列表,找到上一个任务节点任务。可以使用以下代码实现: ```java String previousTaskId = null; for (HistoricTaskInstance historicTask : historicTasks) { if (!historicTask.getId().equals(currentTaskId)) { previousTaskId = historicTask.getId(); break; } } ``` 在循环中,判断当前任务的 ID 是否与当前任务 ID 相等,如果不相等,则认为是上一个任务节点任务。 通过上述步骤,你可以获取上一个任务节点任务 ID(`previousTaskId`),然后可以根据需要进行进一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值