使用wso2bps 3.6.0
我的流程步骤中有这样的代码:
import org.wso2.carbon.context.CarbonContext;
CarbonContext cctx = CarbonContext.getThreadLocalCarbonContext();
String domain = cctx.getTenantDomain();
如果步骤标记为Exclusive
,则此代码返回正确的值。
如果步骤标记为Asynchronous
,则我获得domain=null
。
最后,此行为无法访问其他碳属性和注册表。
此ThreadLocal数据持有者中的问题似乎没有返回org.wso2.carbon.context.internal.CarbonContextDataHolder
中我的异步线程的初始化持有者:
private static ThreadLocal<CarbonContextDataHolder> currentContextHolder = new ThreadLocal(){
protected CarbonContextDataHolder initialValue(){
return new CarbonContextDataHolder(null);
}
};
问题
如何在异步时的流程步骤中获取碳域和注册表?
也许有办法初始化我的线程以允许使用碳注册表?
PS:作为解决方法,我在流程中长时间运行Anync步骤之前使用Exclusive步骤来评估所需的碳依赖属性。