将workflowToken获取到sharepoint中的自定义活动中

将workflowToken获取到sharepoint中的自定义活动中,sharepoint,workflow,Sharepoint,Workflow,我正在尝试为我的sharepoint工作流开发一个自定义活动,以简化某些事情。在其中,我创建了一个任务、日志、设置自定义工作流状态(setState)和其他一些东西 我遇到的问题是setState活动需要workflowToken,该Token仅在主工作流中可用。我发现了下面的博文:这解释了如何创建一个属性,然后您可以将workflowToken分配给该属性,并且该属性工作得很好,但是我不知道如何将我收到的这个令牌设置为setState活动 在designer中,我似乎不能这样做,当我尝试以编程

我正在尝试为我的sharepoint工作流开发一个自定义活动,以简化某些事情。在其中,我创建了一个任务、日志、设置自定义工作流状态(setState)和其他一些东西

我遇到的问题是setState活动需要workflowToken,该Token仅在主工作流中可用。我发现了下面的博文:这解释了如何创建一个属性,然后您可以将workflowToken分配给该属性,并且该属性工作得很好,但是我不知道如何将我收到的这个令牌设置为setState活动

在designer中,我似乎不能这样做,当我尝试以编程方式这样做时:

private void setState_MethodInvoking(object sender, EventArgs e)
{
            SetState s = (SetState)sender;
            s.CorrelationToken = WorkflowToken;

}
在调用调用中,我得到以下错误:

This operation can not be performed at runtime.    at System.Workflow.ComponentModel.DependencyObject.SetValueCommon(DependencyProperty dependencyProperty, Object value, PropertyMetadata metadata, Boolean shouldCallSetValueOverrideIfExists) 
   at System.Workflow.ComponentModel.DependencyObject.SetValu

有什么想法吗

应在visual studio中的设计时使用属性窗口(F4)绑定关联令牌。

应在visual studio中的设计时使用属性窗口(F4)绑定关联令牌.

在MS社区论坛上找到了一个类似问题的以下内容。它解释了什么是correlationToken以及如何使用它:

活动需要具有工作流本身的关联令牌,即onWorkflowActivated活动的关联令牌。由于关联标记是设计时属性,因此不能在运行时设置它们,只能在构造函数中或通过属性绑定进行设置。您可以在工作流的构造函数中设置活动的关联令牌,这是最简单的解决方案,但也有一些缺点。 我描述了一个解决方案,介绍了如何创建一个自定义活动,该活动具有可根据工作流的相关令牌属性绑定的相关令牌属性


为了给你提供更深入的信息,我在微软社区论坛上找到了一个类似的问题。它解释了什么是correlationToken以及如何使用它:

活动需要具有工作流本身的关联令牌,即onWorkflowActivated活动的关联令牌。由于关联标记是设计时属性,因此不能在运行时设置它们,只能在构造函数中或通过属性绑定进行设置。您可以在工作流的构造函数中设置活动的关联令牌,这是最简单的解决方案,但也有一些缺点。 我描述了一个解决方案,介绍了如何创建一个自定义活动,该活动具有可根据工作流的相关令牌属性绑定的相关令牌属性


嗯,我完全忽略了一个事实,在我链接到的文章中,答案已经在那里了:

public CorrelationToken WorkflowCorrelationToken
{
    get { return (CorrelationToken)base.GetValue(WorkflowCorrelationTokenProperty); }
    set
    {
        base.SetValue(WorkflowCorrelationTokenProperty, value);
        **sendEmail.CorrelationToken = value;**
    }
}

在setter中设置相关属性!哦,好吧

Duh,我完全忽略了一个事实,在我链接到的文章中,答案已经存在:

public CorrelationToken WorkflowCorrelationToken
{
    get { return (CorrelationToken)base.GetValue(WorkflowCorrelationTokenProperty); }
    set
    {
        base.SetValue(WorkflowCorrelationTokenProperty, value);
        **sendEmail.CorrelationToken = value;**
    }
}

在setter中设置相关属性!哦,好吧

确切地说,令牌应该在设计时分配,因此WF运行时可以使用该令牌在运行时耦合调用者和被调用者。这里有更多信息:问题的关键是,在设计时不能为自定义活动分配令牌。。。如果您需要的是workflowtoken,而不是tasktoken。确切地说,应该在设计时分配该标记,以便WF运行时可以使用该标记在运行时耦合调用者和被调用者。这里有更多信息:问题的关键是,在设计时不能为自定义活动分配令牌。。。如果您需要的是workflowtoken,而不是tasktoken。