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類在每個上下文中被實例化? –