首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.net中构建工作流应用程序的最佳方法

在.net中构建工作流应用程序的最佳方法
EN

Stack Overflow用户
提问于 2017-09-29 10:52:29
回答 1查看 860关注 0票数 1

我需要在.net中构建一个动态工作流应用程序,它基本上允许创建、监视、暂停、重新启动、持久化和动态更新工作流。工作流的每个节点都是一个高要求的计算任务,可能需要几个小时,工作流将至少由20个节点组成。

目前,最好的解决方案似乎是使用WF4,但环顾四周,我发现在F#、Or良或Akka.NET中基于代理的编程对于实现工作流解决方案非常有吸引力,而与WF4不同的是,没有太多的管道需要学习。使用基于代理的编程启动解决方案是个好主意,还是我应该继续使用WF4?

EN

回答 1

Stack Overflow用户

发布于 2017-09-29 20:01:32

<edit>

要回答您关于建立基于代理的模型的问题,我认为这是最好的方法。它也使调试和维护更容易,同时分离出整个操作的“驱动程序”(即您可以交换WF并用其他设备替换它)。

</edit>

WF4可用于驱动长期运行的业务逻辑。我使用过的最佳方法是简单地启动“代理进程”的工作流,当代理工作时,WF实例会休眠,等待被代理唤醒。

简单地说,类似这样的方法:

  • 有一个“业务流程”流程,负责启动新的工作流和补充持久工作流。
  • 并有一个“代理”进程(或多个进程)来实际运行您长期运行的任务。

编配过程

这个过程负责启动一个全新的工作流实例。您的工作流将简单地启动一个代理进程来完成实际工作。然后工作流实例将进行hibernate。

此过程还将等待请求恢复休眠的工作流实例。本质上,工作流实例将“运行”几分钟,并将真正的工作委托给其他线程/进程。

实现业务流程的一种方法是作为web服务。它使代理进程很容易在代理完成时调用它来唤醒休眠的工作流实例。

Agent过程

这个过程将有实际的执行工作的诀窍。当业务流程调用时,会向它提供一些信息,以了解它应该针对哪个上下文(即业务对象)执行。当它完成时,代理会通知业务流程它已经完成。

回到业务流程

当代理完成其任务时,它将对编排过程进行调用,该流程的上下文已准备好转移到流中的下一项。然后,编制过程将补充该上下文的工作流,并继续它。

工作流可以决定下一个长时间运行的任务,从而启动另一个代理进程,将任务委托给它,然后再对工作流实例进行hibernate。这个循环一直持续到工作流实例到达终点。

“动态”工作流部分

我想你指的是更新“已经在进行中”的工作流,对吗?如果是这样的话,WF4.5有能力允许这样做。我还没有实现过它,但从我所读到的内容来看,它是可行的。

这个概念包括添加一些关于正在执行的工作流版本的元数据。WF将负责启动一个动态活动更新,您可以控制它的协调。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46487321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档