【问题标题】:How to access the value of a Property argument from nested activities?如何从嵌套活动中访问 Property 参数的值?
【发布时间】:2014-01-13 15:43:18
【问题描述】:

我确定我在这里遗漏了一些东西,但很多谷歌搜索并没有为我发现它。情况是这样的:

我们创建了一个自定义工作流设计器,允许最终用户从我们定义的各种自定义活动(审核、提交、通知等)构建工作流定义。这些定义 (Xaml) 被保存到 Db 中,并用于为我们系统中长时间运行的流程创建工作流实例。用户可以为它们中的每一个设置属性(例如,Review 有一个属性参数:AllowedRoles)。问题是,我无法将这些属性传递给嵌套活动。

例如:

Review 有一个内部活动“WriteStatus”,需要访问 Review 中的“AllowedRoles”属性。如果“AllowedRoles”被定义为属性,WriteStatus 无法“看到”它来分配它的值。我可以将其从属性更改为 InArgument,但是我无法在设计器中将值映射到属性或从属性映射(这些属性应该是定义的一部分,并且不与任何特定上下文相关联)。

有没有人遇到过这个问题,或者对我如何以不同的方式解决这个问题有过建议?

提前致谢!

罗伊斯

【问题讨论】:

  • 我可以将它从属性更改为 InArgument,但我无法在设计器中将值映射到属性或从属性中映射出。为什么?你为什么不使用InOutArgument?它允许您完全做到这一点:将值映射到属性和从属性映射。当然,您可以在设计器中对其进行编辑。通常,您通过定义工作流变量并为其分配输出值来从(In)OutArgument 获取值。

标签: workflow workflow-foundation-4


【解决方案1】:

通过将 XAML 活动转换为代码,我能够解决属性与 InOurArgument 的问题。这允许我在代码中设置活动的属性,然后将它们传递给内联的内部活动。可能有更好的方法,但到目前为止效果很好。

public sealed class Test : Activity
{
    public string Stuff { get; set; } // CLR Property

    public Test()
    {
        Implementation = () => new WriteLine {Text = Stuff};
    }
}

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2020-10-20
    相关资源
    最近更新 更多