gpt4 book ai didi

.net - Windows 工作流 - PersistableIdle

转载 作者:行者123 更新时间:2023-12-04 19:16:52 25 4
gpt4 key购买 nike

在我们公司,我们有一个业务流程需要:

  • 从 X 获取数据
  • 等待用户 Y 做研究
  • 根据第 2 步数据从 Z 获取数据

  • 在研究这一点时,似乎有几个选项可以在工作流程中实现这一点。
  • 在步骤 1(工作流事件)和步骤 3(工作流事件)之间添加延迟事件。然后在 PersistableIdle 事件期间,卸载工作流。当用户完成第 2 步后,从数据库重新加载工作流。
  • 除了使用书签而不是延迟事件之外,与#1 相同。

  • 有没有更好的方法(1、2 或其他选项)?

    我们所有的其他事件都是 AsyncCodeActivities,所以我很确定它们不会触发 PersistableIdle 事件(因为它们处于非持久性区域),但我想确保在其他情况下不会意外卸载工作流。这里有风险吗?无论如何要创建一个强制工作流卸载的事件?

    最佳答案

    Is there a better approach (1, 2 or another option)?



    乍一看,#2 听起来很有必要。使用书签(或某种类型的书签事件,如接收)的原因是它们可以随时恢复。这允许用户 Y 的研究结束,并且工作流可以随时恢复执行(而不是被阻止直到延迟到期)。

    反对意见,#1 也可能是必要的,是您可能希望设置触发工作流操作的时间限制(提醒被触发、异常、取消等)。

    如何决定?我认为答案通常是#3:两者都有

    使用 Pick Activity 是实现两者的好方法。在一个 PickBranch 触发器中使用 Bookmarking 事件,在另一个 PickBranch 触发器中使用 Delay 事件,您可以编写一个工作流,该工作流将“处理先发生的事件 - 用户 Y 或超时”。

    您提出的第二个问题是“当我不希望卸载工作流时,如何停止它 - 意外工作流卸载风险”?

    嗯,这取决于。如果您使用的是 WorkflowServiceHost,卸载工作流不会带来很大风险,因为 WorfklowServiceHost 足够智能,可以在需要做更多工作(处理传入消息或从延迟恢复)时重新加载工作流。

    如果您没有使用 WorkflowServiceHost,您可能正在编写您的主机,您可以通过一些工作实现相同的效果,或者您可以防止卸载发生 - 当您编写主机时,您可以通过事件控制卸载策略在工作流应用程序上

    其他杂点:
    - 异步代码事件确实会阻止您的工作流在执行异步工作时持续存在。我不认为它们应该被故意用作反持久性机制 - 如果您想要其中之一,请查看 NoPersistZone activity .

    - 没有“卸载”事件,但有“坚持”事件。工作流可以说他们想要保存进度,但只有主机才能最终决定何时卸载。

    关于.net - Windows 工作流 - PersistableIdle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274187/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com