activiti comment评论用户为null或错乱的问题

问题现象:

1、用户反馈工作流操作人和实际流程设置人员不一致,导致出现数据错乱问题

问题1:评论人为空(act_hi_comment表user_id为空)

由源码知用户userId是通过Authentication.getAuthenticatedUserId();进行获取,那么出现null或者空的情况我们可以手动的设置为所使用的用户ID

String userId = Authentication.getAuthenticatedUserId();
    CommentEntity comment = new CommentEntity();
    comment.setUserId(userId);
    comment.setType( (type == null)? CommentEntity.TYPE_COMMENT : type );
    comment.setTime(commandContext.getProcessEngineConfiguration().getClock().getCurrentTime());
    comment.setTaskId(taskId);
    comment.setProcessInstanceId(processInstanceId);
    comment.setAction(Event.ACTION_ADD_COMMENT);

设置方式有两种:
 

Authentication.setAuthenticatedUserId();//activiti内部设置用户方法
或
identityService.setAuthenticatedUserId(userId);//外部开放设置API

问题2:评论人设置后,人员信息混乱或错误

经过设置上述人员之后,userId是不为空了,但是出现了异常错乱的情况。继续剖析源码

package org.activiti.engine.impl.identity;


/**
 * @author Tom Baeyens
 */
public abstract class Authentication {

  static ThreadLocal<String> authenticatedUserIdThreadLocal = new ThreadLocal<String>();
  
  public static void setAuthenticatedUserId(String authenticatedUserId) {
    authenticatedUserIdThreadLocal.set(authenticatedUserId);
  }

  public static String getAuthenticatedUserId() {
    return authenticatedUserIdThreadLocal.get();
  }
}

由此可以看出,用户ID是存储在ThreadLocal内,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值