flowable设置流程发起人

先来看一段API调用:

 

List hpis = historyService.createHistoricProcessInstanceQuery()
            .startedBy(userCode).list();

查询结果为空,这是为什么?

 

 

1.原因说明

当通过runtimeService接口启动(startProcessInstance[Byxxx])流程的时候会设置一个变量,代码片段(ExecutionEntityManagerImpl.java#createProcessInstanceExecution):

 

        String authenticatedUserId = Authentication.getAuthenticatedUserId();

        processInstanceExecution.setStartActivityId(startActivityId);
        processInstanceExecution.setStartTime(CommandContextUtil.getProcessEngineConfiguration().getClock().getCurrentTime());
        processInstanceExecution.setStartUserId(authenticatedUserId);

        // Store in database
        insert(processInstanceExecution, false);

        if (initiatorVariableName != null) {
            processInstanceExecution.setVariable(initiatorVariableName, authenticatedUserId);
        }

 

从上面的代码片段中可以看出在启动流程的时候引擎会先从Authentication读取已认证用户信息authenticatedUserId ,并将此id

 

设为当前流程实例的startUserId,并作为流程变量和initiatorVariableName(在流程图里自定义)绑定;现在我们只要能设置认证

用户的ID就可以了。

 

2.解决问题

查看API发现Authentication有一个方法:setAuthenticatedUserId()

解决办法很简单只要在启动流程之前调用API即可:Authentication.setAuthenticatedUserId(userId);

当流程启动之后可以到表ACT_HI_PROCINST中查看字段START_USER_ID_的值来验证是否生效。

 

 

3.结束

问题很简单,但是官网的手册没有提到,希望让遇到问题的人少走弯路。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值