Flowable设置流程发起人。在Flowable中启动流程实例的时候,往往打算设置当前的流程实例是谁发起的,也就是流程启动者,这样可以很方便的进行后续的操作,比如获取流程实例的发起者进行统计以及一些审计信息。本文重点讲解一下设置流程启动者的不同方式。
第一种方式
直接调用原生的api设置流程的启动人即可。示例代码如下:
Authentication.setAuthenticatedUserId("分享牛");
String processDefinitionId="myProcess:2:10004";
runtimeService.startProcessInstanceById(processDefinitionId);
Authentication.setAuthenticatedUserId(null);
首先,调用Authentication.setAuthenticatedUserId方法即可,
注意一点:这个方法最终使用一个ThreadLocal类型的变量进行存储,也就是与当前的线程绑定,所以流程实例启动完毕之后,需要设置为null,防止多线程的时候出问题。
上述的代码执行完毕之后,act_hi_procinst表中中的START_USER_ID_字段值已经变为“分享牛”了,
效果图如下:
第二种方式
第一种方式是最原生的方式,如果不想使用,可以使用该方式。示例代码如下:
@Test
public void start2() {
identityService.setAuthenticatedUserId("分享牛");
String processDefinitionId="myProcess:2:10004";
runtimeService.startProcessInstanceById(processDefinitionId);
identityService.setAuthenticatedUserId(null);
}
identityService.setAuthenticatedUserId("分享牛")方法内部实现会直接调用第一种方式,源码如下:
public void setAuthenticatedUserId(String authenticatedUserId) {
Authentication.setAuthenticatedUserId(authenticatedUserId);
}
通常情况下,我们直接使用第一种方式就可以了。
转载请注明:分享牛 » Flowable设置流程发起人