【问题标题】:Rehosting the WF4 designer - how to save and execute workflows created through the rehosted designer重新托管 WF4 设计器 - 如何保存和执行通过重新托管的设计器创建的工作流
【发布时间】:2010-01-20 01:24:19
【问题描述】:

我正在寻找有关在集成解决方案中使用 Windows Workflow 4 的一些明确性 - 特别是关于重新托管设计器和执行由例如创建的工作流。商业用户。

是否需要创建所需的自定义活动并将其编译为 dll,然后与重新托管的设计器一起部署,从而允许业务用户创建/配置使用这些活动的工作流 - 然后业务用户将保存工作流作为 XAML,可以存储在应用程序已知的位置(数据库、文件系统等),然后当应用程序需要执行工作流时,它可以使用 XamlServices.Load 从特定位置并将其作为 DynamicActivity 执行?

如何保存工作流,以便以后可以使用属性和其他配置值对其进行重新序列化?我尝试反序列化从设计器中保存的 Xaml 文件,并且还使用 XamlServices.save()。

使用书签/持久性是否存在任何潜在问题?

作为一个相关问题,是否有任何简单的方法可以在工作流中“返回”,而无需在每个流程图元素上定义返回分支?我正在考虑将工作流与 UI 集成,以便用户输入响应,wf 将处理这些响应,并根据输入做出决策。通过 UI,用户应该能够“返回”到之前的输入。

【问题讨论】:

    标签: serialization workflow-foundation-4


    【解决方案1】:

    您可以使用 ActivityXamlServices.Load(path) 加载 XAML 文件。它将返回一个 Activity,实际上是一个 DynamicActivity,您可以使用 WorkflowApplication 来运行它。

    例如,请参阅my blog post

    【讨论】:

    • 感谢 Maurice,自 WF4 Beta 1 以来,我一直密切关注您的帖子,您提供了许多有用的见解和提示 - 特别是在现阶段“官方”指导数量有限的情况下。按照您的示例,我实际上已经启动并运行了一个工作示例,并且可以在重新托管的设计器中进行编辑,并使用单独的主机运行。您是否会说建议工作流相对独立地存在,并使用消息传递/WCF 与应用程序的其他区域进行通信? (即不直接在另一个应用程序程序集上使用 InvokeMethod)? AppFabric 似乎暗示了这一点。
    • 不确定这是否总是最好的方法,事实上我对此表示怀疑,但 MS 似乎在推动我们这样做。使用 WorkflowServiceHost 为我们带来了最大的收益,特别是在涉及长时间运行的工作流时。从我读到的关于 AppFabrik WCF 的内容来看,这是一条可行的路。现在我认为肯定有其他通信/托管东西的地方,所以不要忽视 WorkflowApplication 和书签。
    • 在我的情况下,我的 workflow.xaml 驻留在服务器中,只能通过 WCF 服务访问。通过从数据库或 WCF 读取将工作流重新托管到工作流设计器中的任何可用示例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多