WF4:验证活动的所有退出状态是否已转换为其他活动

时间:2012-10-28 10:38:30

标签: .net workflow-foundation-4 state-machine

我们正在尝试更改我们的业务流程,以便通过WF4实施。 我们的业务流程如下:

  • 有许多处理程序。
  • 每个处理程序都有许多输出状态。
  • 处理程序实现为活动
  • 设计师将支持这些活动的输出状态
    • 我们可以很容易地看到哪些状态会导致下一个活动
    • 我们可以在编译时验证每个活动的所有状态都与其他活动相关联。

我们如何在WF4中实现这一目标?

1 个答案:

答案 0 :(得分:0)

也许您可以在处理程序活动中定义必需的属性(转换活动)。然后在处理程序的 CacheMetadata 覆盖中,您可以验证它们是否被提供。在处理程序活动的执行方法结束时,您可以使用工作流运行时计划指定的转换活动。如下所示:

public sealed class MyHandlerActivity : NativeActivity
{
    public MyHandlerActivity NextHandler
    {
        get;
        set;
    }

    protected override void CacheMetadata(NativeActivityMetadata metadata)
    {
        // Ensure next handler is supplied.
        if (this.NextHandler == null)
        {
            metadata.AddValidationError("Next handler is not assigned.");
            return;
        }

        // Let the workflow runtime that this activity could schedule another activity (the handler activity).
        metadata.AddChild(this.NextHandler);
    }

    protected override void Execute(NativeActivityContext context)
    {
        // TODO: Handler should do something here.

        // Schedule the next handler.
        context.ScheduleActivity(this.NextHandler);
    }
}