问题标签 [workflow-foundation]

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 投票
4 回答
1822 浏览

workflow - Windows 工作流 - IfElse 分支

我正在尝试使用 Windows Workflow 并拥有一个与以下链接中的图像相似的模型:
工作流屏幕截图

在每个发送活动 ( GetSomthing, GetSomthingElse, GetSomeMoreStuff) 之后调用相同的自定义活动 ( LogSomthingBadHappened)。

虽然在我的真实模型中的这张图片中它可能看起来并不那么糟糕,但自定义活动是一个 SequenceActivty,有很多节点,当它重复 3 次时开始使工作流看起来很丑陋。

我想做这样的事情:
编辑的工作流屏幕截图

分支可以IfElse这样合并吗?
我应该改用状态机工作流程吗(还没有弄清楚这些)?

0 投票
5 回答
2664 浏览

workflow-foundation - 您是否在现实世界的 Web 应用程序中成功采用了 Windows Workflow?

我最近发布了一个关于在 Web 应用程序中运行的 Windows 工作流的问题。当然,这是一个相当技术性的问题,其中包含诸如 ManualWorkflowSchedulerService、HandleExtrenalEvent 等术语……在 20 天的时间里,它获得了大约 15 次浏览。

虽然很可能是我没有以正确的方式提出问题,但它让我开始思考在现实世界的应用程序中采用 Windows 工作流,尤其是在 Web 应用程序中。

您是否使用 WF 成功实现了现实世界的互联网应用程序,回首过去,您的时间(金钱)投资是否得到回报?

0 投票
2 回答
2104 浏览

asynchronous - 执行异步操作的自定义 Windows 工作流活动 - 使用通用服务重做

我正在编写一个自定义 Windows Workflow Foundation 活动,它异步启动一些进程,然后在异步事件到达时唤醒。

我发现的所有示例(例如Kirk Evans的示例)都涉及自定义工作流服务,该服务完成大部分工作,然后将事件发布到活动创建的队列。主要原因似乎是发布事件的唯一方法[在非 WF 线程中工作]是 WorkflowInstance.EnqueueItem,并且活动无权访问工作流实例,因此它们无法发布事件(来自我接收异步操作结果的非 WF 线程)。

我不喜欢这种设计,因为这会将功能分成两部分,并且需要在添加新活动类型时向主机添加服务。丑陋。

所以我编写了以下通用服务,我从活动的异步事件处理程序中调用它,并且可以被各种异步活动重用(省略错误处理):

现在在活动代码中,我可以获得并存储对此服务的引用,启动我的异步操作,当它完成时,使用此服务将事件发布到我的队列。这样做的好处 - 我将所有特定于活动的代码保留在活动中,并且我不必为每种活动类型添加新服务。

但是看到官方和互联网示例这样做会专门提供不可重用的服务,我想检查这种方法是否可以,或者我在这里制造了一些问题?

0 投票
2 回答
1112 浏览

workflow-foundation - WF 通过加载和卸载访问工作流实例变量

在 workflowRuntime_WorkflowUnloaded 和 Loaded 等中。我能得到的唯一没用的是 workflowinstanceId。我希望能够访问根活动上的一些 DP,每当我执行 GetWorkFlowDefintion() 并转换为根活动时,我传入的所有属性都是空的。

0 投票
1 回答
175 浏览

workflow-foundation - 查找代码是否在工作流中运行的最佳方法是什么?

我有可以在许多执行环境中运行的通用代码——在 IIS 中、在 WCF 服务中、在独立应用程序中或在 Windows 工作流实例中。

但是检查代码是否在工作流中运行的最佳方法是什么?目前,我一直在用这段代码寻找WorkflowEnvironment.WorkflowInstanceID并捕捉任何异常:

没有更好的方法吗?我想消除对try...catch块的需要。

0 投票
1 回答
1436 浏览

workflow - 在 Workflow 中需要监听多个事件

我需要一个需要监听多个事件的工作流,任何事件都会进一步推动工作流。

一些动作 --> 调用外部方法 --> 这里有 3 个事件,任何一个都是响应。

我可以在那里使用什么样的活动,我可以拥有三个事件处理程序。任何事件都会进一步推动它。

想过使用状态机工作流程,但如果有什么我可以使用的呢?

0 投票
1 回答
69 浏览

workflow-foundation - WF - 创建选择性列表

我有一个愚蠢的问题。我创建了一个工作流设计器主机,我在其中发布了我自己的活动。我还有一个属性网格,它只显示用特殊属性装饰的属性。该设计器不会被任何 IT 人员使用。

我想要的是在活动中用户可以从列表中选择一个属性值。我知道我可以创建一个枚举,但我希望它是动态的。即特定接口上的所有事件(使用反射提取)。

这完全有可能还是我被枚举困住了?

0 投票
4 回答
6042 浏览

sharepoint - 如何在并行审批工作流中实现拒绝?

我开发了一个带有复制器活动的 SharePoint 工作流,以便为每个审批者复制一个自定义活动。自定义活动为特定用户实现了一个批准分支。它具有 CreateTask、While、OnTaskChanged 和 CompleteTask 活动的经典形式。

我在复制器上设置了 UntilCondition 以在一位批准者选择拒绝批准然后工作流程完成后取消执行。问题发生在其他“挂起”在当前状态的未完成任务上。用户在打开任务时看不到此状态。

我将 UpdateAllTask​​s 放在替换器之后以将任务状态设置为已取消。但是由于 CompleteTask(对于被拒绝的任务)和 UpdateAllTask​​s 之间没有事件活动,因此 UpdateAllTask​​ 活动也为被拒绝的任务设置了 Canceled。

问题是,我该怎么做才能在 UpdateAllTask​​s 之前刷新 CompleteTask 所做的待处理更改?

或者,也许还有另一种方式来实现这样的工作流程。我正在考虑使用 UpdateTask 为自定义活动实现 Cancel 处理程序的方法。但我不知道如何实现它并告诉取消处理程序它在拒绝的情况下执行。

0 投票
2 回答
1166 浏览

workflow - 高吞吐量和 Windows Workflow Foundation

WWF 能否处理在任何时候并行处理数十条记录的高吞吐量场景?

我们想建立一个每小时处理几千条记录的工作流程。每条记录最多需要一分钟来处理,因为它会调用外部 Web 服务。

我们正在测试 Windows Workflow Foundation 来执行此操作。但是我们的演示程序显示,当我们使用并行活动在一个工作流实例中一次处理多条记录时,每条记录的处理似乎是按顺序而不是并行运行的。

我们应该使用多个工作流实例还是并行活动?

是否有任何已知的高性能 WWF 处理模式?

0 投票
4 回答
451 浏览

.net - 实现具有一些要求的纯 xaml 工作流

我目前负责开发一种在我们的应用程序中使用 WF 的方法,并且我有一套需要遵循的要求。

  • 我需要能够纯粹在文本上定义工作流,以便我可以存储和检索它以执行。
  • 在工作流执行期间,需要在活动之间传递数据对象,以便它们可以对其执行操作。
  • 活动由外部类定义,活动需要访问定义它们的类的实例,以便它们可以调用其方法。

我一直在研究 WF,我想出了一些解决方案,但我不确定它们是否是最好的。

我最大的问题之一是为活动提供定义它们的类的实例。有没有办法为工作流运行时提供一个活动工厂或类似的东西?另一个问题来自使用纯 XAML 工作流定义。我需要能够将 DataObject 传递给第一个活动,以便它可以在工作流中使用。

我很难解释这个问题,我希望它足够清楚。

任何帮助将不胜感激。谢谢。