问题标签 [workflow-foundation-4.5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

workflow-foundation-4 - 什么会导致 WF4 不正确地抱怨乱序调用?

我有一个(非常)简单的工作流程。工作流的前三个操作是:

  1. GetWorkflowId(检索工作流 ID 的简单自定义步骤)
  2. InitializeCorrelation(原版)
  3. 接收 Xyz

工作流程中共有 9 个接收。当我在我的单元测试中运行它们(使用 WorkflowServiceTestHost)时,它工作得很好。

但是,当我尝试从客户端调用第一个接收入口点 (Xyz) 时,我收到以下错误:

目前无法对标识符为“ffd6c56d-529f-4f42-ba81-f30c5ea9348d”的服务实例执行“Xyz |{ http://tempuri.org/}IService ”操作。请确保以正确的顺序执行操作,并且使用中的绑定提供有序的交付保证。

我已经尝试了各种方法来获取更多关于此的信息,但都是空的。我有一个 SQL Server 持久性数据库,并检查了它的工作流实例,但那里的 InstancesTable 总是空的。

我开始怀疑我是否在 WF4 中遇到了错误。

0 投票
2 回答
597 浏览

workflow - AppFabric 托管工作流在延迟/卸载后并不总是重新加载

我有一个托管在 IIS 下并使用 AppFabric 1.1 的 WCF Windows 工作流 (4.5) 工作流服务。工作流实例运行时间很长(最多大约一周),但大部分时间都花在了延迟活动上。

起初这似乎工作正常,但是当同时运行工作流的多个实例时(超过 2 个实例会导致这种情况),其中一些在延迟步骤期间从内存中卸载后就永远不会醒来。当我查看日志时,我发现的错误都是这样的:

不幸的是,我没有找到有关该错误消息的任何有用信息。

AppFabric 持久实例表中的 SuspensionExceptionName 和 SuspensionReason 字段显示 System.NullReferenceException:对象引用未设置为对象的实例。但这不会发生在我的工作流程内部,只会发生在外部。

附加信息:

  • 我将活动作为 Fire & Forget 运行(接收活动,不发送)
  • 我的工作流调用其他 WCF 服务来获取数据。
  • 我在 Server 2012 R2、IIS 8(不是天蓝色)上运行它
  • 工作流持久性正在工作。我可以重置 IIS,重新启动......它只是在我运行 2 个实例时出现问题。
  • 我绝对没有达到任何限制。虽然工作流处理几 MB 的数据,但此问题发生在 2 个以上的实例上。

知道这里可能会发生什么吗?

编辑:我意识到我找到了有关问题如何运作的更多信息,但从未将其添加到问题中。当延迟问题发生时,它的操作很像一个由 2 个线程写入的静态变量。

这是一个可视化:

在有人问之前...我摆脱了代码中的每个静态变量、方法和类。没有什么是静态的了。

0 投票
0 回答
213 浏览

workflow-foundation - 为什么 ReceiveAndSendReply 使用相关初始化程序?

如果我使用 ReceiveAndSendReply 活动工厂,我会使用 CorrelationHandle 在 Receive 活动上获得一个 Receive 活动、一个 SendReply 活动和一个请求-回复相关初始化程序。

这种相关性需要什么?根据请求-回复相关性

Receive/SendReply 对用于在工作流服务中实现双向操作。运行时使用请求-回复相关性来确保将回复分派给正确的调用者。当使用 WorkflowServiceHost 托管工作流时(工作流服务就是这种情况),默认的关联初始化就足够了。

虽然 Receive 活动只能在 WorkflowServiceHost 托管的工作流服务中使用,但 Send 和 Send/ReceiveReply 对可以在任何必须调用 Web 服务上的方法的工作流中使用。

如果 Receive/SendReply 只能在 WorkflowServiceHost 中使用,并且在 WorkflowServiceHost 中不需要显式的请求-回复关联初始化,那么我可以简单地删除关联初始化程序并进行处理吗?还是有一些我没有看到的好处?

我不是在询问 SendAndReceiveReply 工厂。这也使用了请求-回复相关初始化程序,但我想我可以理解那里的需要。

我刚刚开始使用 Workflow Foundation,所以请不要假设我已经排除了任何明显的答案。我试过了,但我很可能忽略了一些。我链接到的页面还包含一个带有显式相关初始化程序的 Receive/SendReply 对的示例。我也没有看到那里的好处。

0 投票
0 回答
208 浏览

c# - 启用工作流持久性时 OperationContext.Current 变为空

我正在使用 WF 4.5 和 Devart dotConnect(用于持久性)。我在net.Tcp协议中使用WorkflowServiceHost. 我正在发送一些信息IncomingMessageHeadersOperationContext.Current在我启用持久性之前,这一切都很好。一旦启用持久性,OperationContext.Current就会得到null. 我不知道为什么会发生这种情况,而且数据OperationContext和数据Persistence都是必要的。这是我的配置

行为.config:

可以使用此行为OperationContext.Current,但只要我取消注释oracleTracking并将设置为 null oracleInstanceStoreOperationContext.Current

请帮忙!!!

0 投票
1 回答
90 浏览

c# - 重新托管的工作流设计器在加载时抛出 TypeLoadException

我正在尝试在我的 WPF 应用程序中重新托管工作流设计器。

但是,当我尝试初始化它时,我会收到一个TypeLoadException包含以下消息的对话框:

“无法从程序集 'Reporting.Primitives,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 加载类型 'Reporting.Primitives.Documents.IDocField`1'。”

我已经尝试将其剥离并在这里得到了简单的调用代码:

正是调用Load导致了异常。

这是奇怪的部分:解决方案中没有名为IDocField<T>.

有一个IDocField和一个DocField<T> : IDocField,所以它似乎是IDocField<T>从某个地方发明了这种类型。

我没有任何反射电话正在寻找IDocField<T>

我还尝试将应用程序周围的代码移动到不直接引用的各种模块中,Reporting.Primitives但无济于事。

有一个IUiDocField<T>界面浮动。

奇怪的是,我IDocField<T>前段时间确实写了一个接口,但现在不在解决方案中,所以我不明白为什么会导致问题。

0 投票
1 回答
1786 浏览

c# - Workflow Manager 1.0 可行吗?

我一直在工作的公司将开发一个新项目,在这个项目中,Windows Workflow Foundation 4.5(我们无法更改)将用于 Web UI 使用的流程系统。我们的主要用例是订单支付,它在 UI 中有多个步骤,并且在每个状态转换中,UI 将通知工作流实例,如果提供的值是有效的。如果是,它将持续存在,依此类推。(如http://examples.donnywals.com/angular-splitform/) 它被设计为工作流将托管在 IIS 上,并且可以通过 REST API 访问关于工作流的每个操作(上传、删除、管理实例)。此外,工作流 xaml 文件应存储在数据库中。版本控制、跟踪和跟踪以及这种基本操作也应该得到支持。在寻找如何轻松实现这一目标的过程中,我遇到了 Workflow Manager 1.0。我想使用 WF 1.0 但是;

  1. 它缺乏文档。例如,我不知道如何在没有 WorkflowManagerClient 且未提供任何文档的情况下使用它的预构建 REST API。我在哪里可以找到关于它的好文档?
  2. WM 1.0 的最后一次更新是在 2014 年提供的,看起来没有人关注它。我在哪里可以找到路线图?
  3. 似乎没有人在没有 Sharepoint 2013 的情况下使用 Workflow Manager 1.0。有没有人在没有 SP 2013 的情况下使用它,您对结果满意吗?
  4. 如果可能,我需要将以前版本的工作流实例更新到最新版本,但我在 WM 1.0 中找不到有关此问题的解决方案。唯一可能的选择是终止先前版本的实例或允许先前版本的实例在该工作流的先前版本中工作,而不是最新版本。它没有提供还是没有记录?
  5. VS 2013 和 VS 2015 不支持可从 Visual Studio 2012 中的工作流设计器访问的 WM 1.0 活动(例如 HttpSend、GetConfigurationValue 等)。我们使用 VS 2015,我认为我们不能使用 VS 2012,没有办法使用 WM 1.0 特定活动吗?
  6. 如果我不应该使用 WM 1.0,我似乎也无法使用 WorkflowServiceHost,因为 AppFabric 服务器在 2016 年之后将不受支持。我唯一的选择是 WorkflowApplication 吗?

欢迎每一条信息,谢谢。

0 投票
2 回答
138 浏览

workflow - Workflow 4.5 是否需要 SQL Server 来保持状态?

我正在阅读 APress 发布的“Pro WF 4.5”,这似乎明确地说,为了在服务器崩溃/关闭(任何会清除内存的任何事情)后在长时间运行的工作流中保持状态,SQL Server back- end 是持久性所必需的。

我在网上看到的很多 MSDN 资料似乎与此相矛盾。例如,下面链接的文章。

https://msdn.microsoft.com/en-us/library/dd851337.aspx

什么是真正的独家新闻,来自实际使用 WF 的人?TIA。

0 投票
1 回答
191 浏览

workflow-foundation-4 - 使用嵌套的 XAML 活动运行工作流

我需要运行工作流 XAML,但该工作流保留对其他 XAML 的引用。当我尝试通过以下方式运行工作流程时

我从 Load 方法得到下一个错误:

活动“MyNamespace.MyMainActivity”的 CacheMetadata 抛出“System.Xaml.XamlObjectWriterException:无法创建未知类型“{clr-namespace:MyNamespace}MyNestedActivity”。

我该如何解决?

0 投票
2 回答
850 浏览

workflow-foundation-4 - 如何在重新托管的工作流设计器中扩展上下文菜单?

我们正在使用一个重新托管的设计器(当前为 WF 4.0),其中包含许多自定义活动,它们都有自定义设计器。对于其中的一堆,我想在设计模式下将条目添加到设计器的上下文菜单中。我说的是这个菜单:

在此处输入图像描述

例如,对于 XAML 编码的活动,我希望有一个“开源...”条目,它将将该特定活动的 XAML 源加载到新设计器中。为此,我必须将条目添加到菜单中,并在单击时确定单击了哪个活动。这两部分我都不清楚。我怎样才能做到这一点?

在 WF 3 中有ActivityDesignerVerb类可以做到这一点。在 WF 4 中似乎有workflowDesigner.Context.Services.Publish<ICommandService>(...),但我不知道如何使用它向上下文菜单添加自定义操作。我怎样才能做到这一点?

这个 SO 条目显示了内部调试器命令的一些内容,但我想添加一个全新的命令。

0 投票
0 回答
34 浏览

c# - VS 自动插入对存在活动的项目的引用

有一个问题,当我将变量放入任何活动参数时,然后引用要添加活动的项目的引用。这会导致问题,因为我在另一个应用程序中仅使用 XAML,编译器找不到活动项目的程序集。

例如:

项目中有空活动,

添加字符串的参数,

将Invoke方法活动放入活动中,

该活动不包含对该项目的程序集引用

将 Invoke 方法的参数作为 Target 对象,

出现新的参考:

如何避免添加活动项目参考?