使用 WorkflowServiceHost 进行 WF4 工作流版本控制

2024-03-06

相关这个问题 https://stackoverflow.com/questions/2064518/loading-persisted-workflow-after-workflowdefinition-has-changed-in-wf4.

我了解如何使用来实现工作流程的版本控制WorkflowApplication http://msdn.microsoft.com/en-us/library/system.activities.workflowapplication(VS.100).aspx。如果您保留旧版本工作流程的原始 XAML 定义,则可以使用正确的方法加载它们WorkflowApplication构造函数。

你如何确保WorkflowServiceHost http://msdn.microsoft.com/en-us/library/system.servicemodel.workflowservicehost.aspx当您想要在 IIS 中托管工作流时,使用正确的工作流定义吗?

有一个WorkflowServiceHost您可以使用它来加载工作流定义的构造函数,但是当您通过 XAMLX 文件托管在 IIS 中时,您不会调用WorkflowServiceHost您自己,这是由 IIS 以某种方式处理的。那么,如何确保为正确版本的工作流程加载正确的工作流程定义?


使用 WorkflowServiceHost 的方法与使用 WorkflowApplication 的形式并没有什么不同。保留各种 XAML(X) 版本的基础知识仍然适用。因此,对于 WorkflowServiceHost,您需要创建多个 WorkflowServiceHost,每个托管不同版本的 XAMLX。每个都有不同的端点。因此,基本上,en 端点都可以处理工作流服务及其版本。

那么如何从客户端获取消息到正确的WorkflowServiceHost呢?在这里,WCF 路由服务是您的朋友。它们不是让客户端直接与您的 WorkflowServiceHost 通信,而是使用中间 WCF 路由服务。这反过来会检查消息并将它们路由到托管相应 XAMLX 文件的 WorkflowServiceHost。那么它是怎么知道的呢。有几种方法可以做到这一点。例如,使用消息相关标识符进行数据库查找,并且对新工作流程的请求始终指向最新版本。最简单的方法是让工作流服务返回版本号作为初始请求的一部分,并使其成为每个后续请求的必需部分。这样,WCF 路由服务只需发送消息数据即可完成其所有工作。

一个例子是:

  1. 客户端使用订单 ID 7 发送启动新工作流程的消息并接收回版本 3。客户端应用程序使用 URL httl://localhost/MyWorkflow.xaml,路由服务转发到 httl://localhost/MyWorkflow.v3.xamlx,这是最后一个版本。
  2. 它发送到工作流的下一条消息包含 orderid 和版本 3。客户端应用程序使用 URL httl://localhost/MyWorkflow.xaml,路由服务转发到 httl://localhost/MyWorkflow.v3.xamlx,这是指示的版本。
  3. 客户端应用程序想要向较旧的工作流程发送消息。它使用 orderid 2 和版本 1(此工作流程启动时回复)。客户端应用程序使用 URL httl://localhost/MyWorkflow.xaml,路由服务转发到 httl://localhost/MyWorkflow.v1.xamlx,这是所指示的版本。

Check these http://rocksolidknowledge.com/screencasts.mvc有关 WCF 路由服务的更多信息的截屏视频。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WorkflowServiceHost 进行 WF4 工作流版本控制 的相关文章

随机推荐

  • 为什么“a”是对象引用的 Java 字节码前缀? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 特定于类型的 Java 字节码指令具有单字符前缀来指定该指令相关的类型 Taken from Wikipedia s entry on J
  • Facebook、IE 和 P3P

    在过去的几周里 我试图找出 IE 中会话 cookie 保存的问题 我们的应用程序在 iFrame 内运行 因此 cookie 被视为第三方 我知道 IE 6 和 7 需要 P3P 标头 但出于某种原因 我仍然看到许多 IE6 7 用户从不
  • abraham 的 twitteroauth 库适用于 update_with_media 吗?

    abraham 的 twitteroauth 库适用于 update with media 吗 我正在使用下面的代码 但它返回我 stdClass 对象 请求 gt 1 statuses update with media json 错误
  • 正确的向量内存管理

    我正在制作一个游戏 我有一个子弹飞来飞去的矢量 当子弹完成后 我执行Bullets erase bullets begin i 然后子弹就消失了 然而它似乎并没有失去记忆 如果我创建 5000 颗子弹 然后在它们消失后再创建 5000 颗
  • @Mock 和 @InjectMocks 之间的区别

    有什么区别 Mock and InjectMocks在 Mockito 框架中 Mock创建一个模拟 InjectMocks创建类的实例并注入使用创建的模拟 Mock or Spy 注释到此实例中 注意你必须使用 RunWith Mocki
  • C# 中带有附加行的十字准线光标

    如何在屏幕截图上制作带有帮助线的十字准线光标 我知道如何制作十字光标 this Cursor System Windows Forms Cursors Cross 也可以是这样的 就像在 CAD 软件中一样 这是我使用的代码 x 和 y 是
  • 适用于 Android 的“实时”内存分析工具

    是否有适用于 Android 的 实时 内存分析器工具 类似于 XCode 中的 Instruments 大多数对内存分析的搜索都会引导我使用内存分析器工具 这很棒 但我非常感谢一个可以动态显示哪些类在应用程序的生命周期中消耗 和释放 内存
  • React:如何对渲染的组件的变化进行动画处理?

    我更改了通过时间间隔呈现的组件 我希望能够在每次发生变化时添加动画 最好的方法是什么 constructor props super props this state currentComponent 1 numberOfComponent
  • 将服务引用添加到 WP8 应用程序时出现问题

    我尝试添加服务引用http www webservicex com globalweather asmx WSDL网络服务 我转到 添加服务引用 它发现它很好 但是当我尝试单击 确定 时 出现错误 无法签出当前文件 该文件可能是只读的或锁定
  • JavaFX并发任务设置状态

    我正在为我的应用程序创建 UI 该应用程序与其他平台的版本共享核心模块 在JavaFX中 我尝试使用Task http docs oracle com javafx 2 api javafx concurrent Task htmls 在后
  • PHP 基于当前文件路径动态包含

    我想找到一种方法来包含基于当前文件路径的一些文件 例如 我有 website com templates name1 index php 这个 index php应该是一个独特的文件 我将在不同深度的许多不同目录中使用它 所以我想让代码通用
  • 如何使用数字字符实体而不是问号将 XmlDocument.Save() 编码为“us-ascii”?

    我的目标是获得一个二进制缓冲区 MemoryStream ToArray 会产生byte 在本例中 的 XML 且不会丢失 Unicode 字符 我希望 XML 序列化程序使用数字字符引用来表示任何在 ASCII 中无效的内容 到目前为止
  • 在node-sqlite3中使用Gyp中的共享库

    我是吉普新手 我不想编译我的依赖项 而是想使用共享库 特别是我的计算机上已有的 libsqlite3 so 主要的 binding gyp 目前看起来像 targets target name node sqlite3 sources sr
  • 国际键盘上常用字符的键码

    好的 从特殊符号捕获按键代码会在不同布局的键盘上产生不同的结果 但是像 a z 这样的 常见 字符呢 如果您有 QWERTY 键盘 您将获得按键代码81当你输入时q 当您拥有 AZERTY 键盘时 您会获得代码吗81当你按a since a
  • 在 HttpModule 中重写 URL 时如何使波形符 (~) 运算符起作用?

    我在用重写路径 http msdn microsoft com en us library 1kz7fdx9 aspx in an IHttpModule 路由 到子 Web 应用程序 如以下 IIS 布局所示 例如 当请求 根 布莱赫进来
  • 修改并重新编译Android SDK

    我知道Android中实现的一些方法和一些类没有导出到Android公共SDK中 我已经能够通过编译我的应用程序并将其放置在 Android 树中来创建一个使用其中一些功能的应用程序 是否可以通过从源代码重新编译这些函数来将其导出到 And
  • 如何将一个数组输入与另一个数组输入关联起来?

    假设我有 2 个扫描仪填充的阵列 name and age 每一项都按顺序填写 如果我要找到数组中最年长的人 如何使用数组打印出他们的名字和年龄 例如最大的条目age was 78 有没有办法将其与name 数组来打印它 参考代码 publ
  • 当元素有多个类时,jquery 按特定类查找元素

    所以我正在做一些后端团队在构建时没有经过深思熟虑的事情 这给我留下了一个充满 div 的文档 我正在做的是从我需要单击的元素回滚 获取父容器 然后在父容器中找到一个元素class alert box warn class alert box
  • 在自定义损失函数中重塑张量

    我有一个类似的问题这个问题 https stackoverflow com questions 43056512 reshape tensorflow tensor inside keras loss function 我正在尝试在 ker
  • 使用 WorkflowServiceHost 进行 WF4 工作流版本控制

    相关这个问题 https stackoverflow com questions 2064518 loading persisted workflow after workflowdefinition has changed in wf4