0

我可以控制工作流的活动是否为单例吗?我发现每次执行工作流程时都会重复使用工作流程中的相同活动类别实例。工作流实例是单例吗?控制活动实例?

或者干脆说,在Execute()方法的activity方法中我得到了不同的context.WorkflowInstanceId,但是context.ActivityInstanceId为

这是设计吗?默认?

我可以控制活动实例吗?每次执行工作流程时,是否可以有一个新的活动实例?

回答

1

是的,这是默认行为。活动实例可以是可以咬你的miltithreaded环境(web上下文)中的同一个实例。所以为了安全起见,您应该始终将所有活动变量作为参数。参数通过ActivityContext传递,对于每个活动实例都是不同的。

public class CustomActivity : Activity 
{ 
    public int Age { get; set; } 

    protected override void Execute(CodeActivityContext context) 
    { 
     //do some work with Age 
    } 
} 

由于不同的线程可以设置/得到相同的实例变量,而不是上面的代码,你应该这样做:

public class CustomActivity : Activity 
{ 
    public InOutArgument<int> Age { get; set; } 

    protected override void Execute(CodeActivityContext context) 
    { 
     //do some work with Age within CodeActivityContext 
    } 
} 
+0

怎么样通过国际奥委会注入的依赖? –

+0

通过ctor注入的@MhaihaiBejenariu值将被存储在成员属性(独立于上下文)上,所以IOC也不能解决问题。 – rovsen

+0

对不起,我的问题是模糊的。我正在使用Unity,并且我有一个类成员:[Dependency] MyLogic。在这种情况下,MyLogic仍然是一个单身人士。我怎样才能使注入的MyLogic类在每个上下文中被实例化? –