0

使用 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 步骤来评估所需的碳相关属性。

4

0 回答 0