這可能嗎?我知道這是因爲他們有WF活動包,但我不確定它是如何完成的。如果能夠使用Body塊的活動來插入其他活動,按鈕等,那將是非常好的。如果不是太麻煩和/或耗時的話。如何編寫包含「正文塊」的自定義WorkFlow 4代碼活動?
回答
如果遵循一些規則,這很容易。下面是有一個孩子一個NativeActivity的示例:
[Designer(typeof(MyActivityDesigner)), ContentProperty("Child")]
public sealed class MyActivity :
NativeActivity, IActivityTemplateFactory
{
// this "activity delegate" holds our child activity
public ActivityAction Child { get; set; }
// may be necessary to do this
protected override void
CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddDelegate(Child);
}
protected override void
Execute(NativeActivityContext context)
{
// do some work here, then
context.ScheduleAction(Child);
}
// better to use a template factory than a constructor to do this!
Activity IActivityTemplateFactory
.Create(System.Windows.DependencyObject target)
{
return new MyActivity
{
// HAVE to have this set, or it fails in the designer!
Child = new ActivityAction()
};
}
}
注意的幾件事情:我們使用活動委託類型來保存我們的孩子。其次,我們實現了IActivityTemplateFactory來爲設計者配置我們的活動。它總是比構造器中的東西更好/更穩定。我們將綁定到代理的屬性,所以我們必須設置一個實例;否則綁定將失敗。
當我們執行時,您所要做的就是安排您的孩子在適當的時候回來。當然,你不應該阻止。
然後,在設計師,你會綁定到兒童是這樣的:
<sap:WorkflowItemPresenter
HintText="Add children here!"
Item="{Binding Path=ModelItem.Child.Handler}" />
您需要從NativeActivity開始,而不是從CodeActivity開始。 NativeActivity可讓您通過其執行上下文安排子活動。 NativeActivity沒有模板,只需創建一個類並從NativeActivity派生。
謝謝莫里斯。因此,NativeActivity允許我創建在VS工作流設計器上顯示執行主體的活動?我希望能夠編寫序列,平行,while,foreach等活動,這些活動具有執行塊,我的活動的用戶可以在活動中放置其他活動。 – jlafay 2010-06-24 12:48:46
對此有何意見?你沒有真正解決我的問題的實際情況。 – jlafay 2010-07-22 21:35:45
查看Matt的博客文章,這聽起來像是你在找什麼:http://blogs.msdn.com/b/mwinkle/archive/2009/12/24/swiss-cheese-and-wf4-or- an-introduction-to-activityaction.aspx – Maurice 2010-07-23 06:34:58
臨WF:Windows工作流是.NET 4本書由布魯斯·Bukovics也有很多例子。你可能想檢查一下。
謝謝dmelinosky,我只是把它拿起來了,我正在深入挖掘。對於任何以WF或WF4開頭的人,絕對拿起那本書,這很棒。 – jlafay 2010-07-27 14:10:18
- 1. 使用自定義庫的自定義活動的Windows Workflow 4 Designer錯誤
- 2. 如何自定義重新託管的Workflow 4 Designer中的活動?
- 3. 如何包含代碼塊
- 4. 如何編寫包含其他taghelpers的自定義ASP.NET 5 taghelper
- 5. Workflow Foundation 4 - 活動設計
- 6. 如何跟蹤自定義Windows Workflow Foundation活動屬性?
- 7. 如何編寫一個包含自定義Shape類的方法
- 8. Windows Workflow Foundation 4.0選擇包含延遲活動的活動
- 9. Drupal:自定義WorkFlow模塊的外觀
- 10. 如何編寫自定義IDL的代碼生成器?
- 11. 如何使用BaseAdapter爲自定義listview編寫onitemClickListener的代碼?
- 12. 如何在SSH中自動創建包含代碼的文件?
- 13. 如何在JSF中包含代碼塊
- 14. 實現執行異步操作的自定義Windows Workflow活動
- 15. Workflow Foundation中自定義活動的可選參數
- 16. Workflow 4.0中的自定義活動:WorkflowElement或Activity/CodeActivity?
- 17. 如何在joomla編寫自定義php代碼
- 18. 如何編寫和運行apache Giraph自定義代碼?
- 19. 如何在使用Firebase時編寫自定義代碼(邏輯)
- 20. 如何在Rdlc報告中編寫自定義代碼
- 21. 當包含自定義代碼文件時Joomla網站中斷
- 22. 廚師 - 如何編寫包含DSL自定義資源的「執行」
- 23. 如何編寫在服務器啓動時運行的自定義代碼?
- 24. 如何編寫包含'乳膠字符的程序代碼?
- 25. 如何編寫包含此代碼主函數的類?
- 26. Magento自定義模塊未使用正確的包含路徑
- 27. Windows Workflow Foundation 4創建基本活動
- 28. 如何使用python包,模塊等編寫自定義解決方案
- 29. 如何編寫模塊化Android代碼
- 30. 編譯彙編代碼,其中包括含C-定義
你可能會告訴我你使用哪個命名空間來使用Designer屬性? – jlafay 2010-07-23 16:00:27
以供將來參考,只需搜索MSDN中的「DesignerAttribute」或您正在尋找的任何內容即可。它會告訴你它所在的程序集,在這種情況下,它是System.ComponentModel – Will 2010-07-23 16:14:19