【问题标题】:Howto use WF4 rules to run WF4 Activities如何使用 WF4 规则运行 WF4 活动
【发布时间】:2011-05-27 06:34:41
【问题描述】:

我正在尝试制作发票处理工作流程,我涉足了 WF4 的 System.Activities.Rules 部分,我有点喜欢它。但是,我想以规则为起点,而不是先踢 Activity。

这样

收款发票 = 发票

对于每张发票,将其放入一个信封中,其中将包含工作流元数据,如状态、nextActivity 等。

将信封放在一组规则上,如果条件匹配,则使用这样的一组参数设置下一个活动,IF CustomerID = XYZ then setNextActivity(SplitInvoiceActivity(Customer1,Customer2, Percentage))

然后 Activity 将发票拆分为 2 张发票并将它们放回循环中,当没有规则适用时,我们将信封状态设置为“已处理完成”之类的状态并退出。

如何使用 WF4 活动对此进行建模? 我应该从哪个类型的 Activity 派生,nativeActivity、CodeActivity 等。

提前谢谢!

【问题讨论】:

    标签: c# .net workflow-foundation-4 rules rule-engine


    【解决方案1】:

    System.Activities.Rules 命名空间从何而来? WF4中没有这样的东西。 WF3 中有一个 System.Workflow.Activities.Rules 命名空间,但它与 WF4 完全无关。有一些关于如何在两种技术之间进行互操作以及在 WF4 工作流中使用 WF3 规则引擎的示例,但我不能真正推荐这种方法。

    关于你的活动基类动作。一般来说,从 CodeActivity 派生出一些简单的活动并完成一些工作。只有当你需要更强大的活动,或者由多个子活动组成,或者需要长时间运行并创建书签时,你才需要使用 NativeActivity。也就是说,你可以一直使用 NativeActivity,因为 CodeActivity 中没有什么是你不能在 NativeActivity 中做的,也没有真正的性能差异。

    【讨论】:

    • 嗨,谢谢回答!我现在不认为 System.Workflow.Activities.Rules 纯粹是 Wf3。那么真正的问题是。我将如何使用 Wf3 规则来启动一些 Wf4 活动?我应该在 Wf4 中使用他的新状态机,然后创建 som CodeActivities,然后根据规则检查然后开具发票,然后设置下一个状态?
    • 是否使用状态机或流程图实际上取决于工作流的其余部分以及如何建模。根据规则的复杂性,您可以在 CodeActivity 或复合活动中对它们进行编码。 CodeActivity 更容易处理复杂的规则,但复合活动更适合向业务分析师展示正在发生的事情。
    • 谢谢,我会尝试创建一个 startActivity,然后从我读取下一个要处理的发票的地方启动一个 codeActivity,然后根据规则检查它。我将使用 WFSamples 中包含的外部化规则集数据库示例来存储规则。规则将直接在发票对象上执行一些简单的操作,或者启动一些将执行操作的活动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多