簡體   English   中英

設置工作流程的鍵/ ID

[英]Set a key/id to a Workflow

這是Workflow Foundation的新功能,因此對於許多人來說可能是一個基本問題。

我有一個工作流設計器(客戶端)/服務器應用程序。 在設計器中,我可以將工作流上傳到服務器,服務器將其存儲在數據庫中。 設計人員可以請求從服務器下載工作流程。 下載后,我們可以在設計器中對其進行修改,然后再次上傳。 為此,我需要在工作流程中添加某種ID /密鑰。

最好的方法是什么?

我正在考慮將屬性添加到ActivityBuilder中,但是這樣做會將其添加到參數列表中,這似乎不太正確...

任何幫助將非常感激


嗨,@ Will,我可以將屬性附加到“活動”,但是無法正常工作。 我沒有使用諸如WorkflowRecord之類的任何模型,它只是一個基本的設計器。

我使用_workflowDesigner.Save(path); 保存它或_workflowDesigner.Load(path); 加載它。

我創建並添加附加屬性

attachProp = new AttachedProperty<int?>()
    {
        Name = "Key",
        IsBrowsable = true,
        Getter = (modelItem) => 5,
        Setter = ((modelItem, keyValue) => modelItem.Properties["Key"].SetValue(keyValue)),
        OwnerType = typeof(Activity)
    };

    _workflowDesigner.Context.Services.GetService<AttachedPropertiesService>().AddProperty(attachProp);

如果我嘗試訪問附加屬性,它將引發異常(不包含鍵的定義)

dynamic mainActivity = ((_workflowDesigner.Context.Services.GetService<ModelService>().Root.GetCurrentValue() as ActivityBuilder).Implementation as Activity);
int? testValue = mainActivity.Key; //Exception, Activity' does not contain a definition for 'Key'

我通讀了此[post]( http://blogs.msdn.com/b/kushals/archive/2010/01/04/base-designer-with-additional-adornments.aspx ),將attach屬性添加到活動中

通過AttachablePropertyServices類附加屬性。

public class WorkflowRecord
{
    static AttachableMemberIdentifier Id = 
        new AttachableMemberIdentifier(typeof(Guid), "Id");

    public static object GetCommentText(object instance)
    {
        object viewState;
        AttachablePropertyServices.TryGetProperty(instance, Id, out viewState);
        return viewState;
    }

    public static void SetCommentText(object instance, object value)
    {
        AttachablePropertyServices.SetProperty(instance, Id, value);
    }
}

您可以使用它在工作流的實例上獲取或設置數據庫ID,它將被序列化到xaml /從xaml反序列化。

<Activity
    xmlns:me="clr-namespace:Herp;assembly=derp"
    me:WorkflowRecord.Id="This is a guid lol"
    x:HideAdditionalAttributesBecauseThisIsAnExample="true" />

有關更多信息,請閱讀msdn上的此博客文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM