2011-05-26 105 views
0

我有一个复杂的工作流程来向客户发送营销电子邮件。有20项活动可以决定谁收到什么样的电子邮件。覆盖工作流中的活动?

我的活动中95%是在二进制活动库中定义的。我组装了我的主要活动在视觉工作室。

对于某些类型的客户,我希望步骤25a中的活动(比如说)的行为与我在构建它时定义的行为不同。我们可以从数据库中托管的xaml加载活动。

一种选择是克隆这些客户的整个工作流程,但这是很多代码重复。

是否有可能重写运行时用来定位和封送活动的任何内容,以便如果我的客户是左撇子,那么工作流中的一个活动将被替代,而不是我在IDE中定义的内容?

我想如何重写MVC中的ViewEngine动态加载ipad视图或其他。是否有类似的加载活动?

回答

0

好消息......我已经在Microsoft.Activities中构建了您需要的完整内容。详情请参阅WF4 How To Invoke a Child Workflow as XAML,就在昨天,我添加了对追踪儿童工作流程的支持。请参阅Tracking Child Workflow with InvokeWorkflow

+0

嘿罗恩,我一周都在看你的视频!我会检查出来的。 WF就是这样一个“拼合在一起的乐高解决方案”,我希望有一种简单的方法可以自动交换步骤而无需重新编译应用程序。我们为每个客户制定了很多自定义规则,我们希望WF能够帮助我们避免重新部署每个案例。 – 2011-05-27 15:16:35

1

如果编译到程序集中,则无法替换工作流本身中的活动。有几个选项可供您使用:

  • 使用ActivityXamlServices.Load()使用动态加载的活动,因为XAML只是在更改XAML之前更改XAML。
  • 在您的工作流中使用包装活动,该活动仅在运行时加载实际活动并使用WorkflowInvoker执行它。
  • 使用活动和扩展将实现与实现分开。该活动只抓取所有输入和扩展,并调用一个函数。在运行时,您可以根据需要改变工作流扩展的实际实现。