- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我长期以来一直在努力寻找一个令人信服的工作流用例(即:WF)来对抗常规的命令式编程。每次我都会得出这样的结论:我应该把 WF 排除在外,或者推迟到以后再做。但我总有一种挥之不去的感觉,总觉得缺少了一些东西。
有人知道有哪本书真正为工作流方式提供了强有力的论证吗?这本书必须 (i) 很好地教授 WF,并且 (ii) 使用适当的用例来展示 WF 使实现比我们只进行常规的直接编码更容易。
我会很感激。
最佳答案
从非专家的角度来看,对我来说,WF 有两点值得支持——一是工作流平台所独有的,二是可能更方便。
便利的功能是能够创建新的事件组合方式。命令式编程仅提供有限的组合原语:基本上是排序、if-else 和循环。 WF允许您构建自己的组合运算符,例如交错执行、并行执行、先过后后等。当然,它还内置了复杂的状态机组合机制。
我说这是一个便利的功能,因为您可以使用 C# 等命令式语言构建所有这些运算符:事实上,这就是构建 WF 运算符的方式。但是 WF 使使用和读取自定义组合变得容易,而在 C# 中,您很快就会陷入大量 lambda 表达式中。因此,如果您有复杂的编排要求——也就是说,如果您的事件组合在一起的方式比序列、if-else 和循环更复杂——那么 WF 可能会让您的程序更容易表达和理解。
独特的功能是耐用性。这是舒克拉和施密特这本书的出发点,也是它不断回归的地方。用 C# 或 VB 编写的命令式程序可以运行数小时、数天、数周(如果幸运的话),甚至可能数月……但最终 IIS 将循环应用程序池,或者管理员将要安装最新的安全更新,或者有人会被电源线绊倒。那么你的程序如何记住,“好吧,我已经收到了 Unimaginative Company Names R Us 的采购订单,我正在等待 Bank of Breadheads Inc. 的信贷批准,当我收到批准后,我可以发送确认信息电子邮件”?
在传统的命令式程序中,当进程终止时,执行状态也随之终止。您可以启动一个新进程,但它将在程序的开头启动。当然,您可以创建一个数据库并使用它来存储“已获得采购订单”和“已获得信用批准”等标志。但现在您必须编写特定于应用程序的代码来保存和查询状态,并根据该状态跳回到程序中的正确点。您必须为每个长时间运行的应用程序设计一个新的数据库和新的保存/恢复/跳转逻辑。
持久工作流程就是为了解决这个问题。如果您将程序编写为事件工作流,那么 WF 将负责保存其状态,包括其在执行流中的位置。运行该程序的机器可能会着火并烧毁您的数据中心,但是当银行的响应到来时,WF将唤醒您在另一个数据中心的程序,并且它将开始在正确的位置以正确的方式运行数据。
对我来说,这就是 WF 的“强有力的理由”。在许多情况下,您不需要它:应用程序的生命周期很短,因此故障并不是一个重要的问题,并且从头开始重新启动是一种可行的恢复策略。但对于长期存在的应用程序,例如您可能正在编排可能需要数小时才能响应的外部系统,或者涉及可能需要数天才能响应的人员的业务流程,持久性可能是 WF 的 killer 级功能。
免责声明:我不是 WF 程序员,也从未构建过实际的 WF 系统。我是从 BizTalk 背景以及我所读到的有关 WF 的内容中得出这个结论的,所以这个评估有点理论化。希望它对大家都有帮助!
关于workflow - WF 的有力案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485795/
这似乎比我最初猜测的更复杂。我有一个工作流程需要在代码中启动另一个工作流程。这是怎么做到的?我是否必须首先获取对当前工作流实例的 WorkflowRuntime 的引用? 最佳答案 我认为Invoke
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
需要有关实现简单配额系统的最佳做法的指导 我想限制成员可以将自定义内容类型(称为 token )添加到他们的成员文件夹的次数(我还创建了一个自定义成员文件夹)。 用例(限制成员可添加的 token 数
我最近发布了一个有关在Web应用程序中运行Windows Workflow的问题。当然,这是一个技术性很强的问题,其中包含ManualWorkflowSchedulerService,HandleEx
今天,我接受了“Microsoft Workflow Foundation”的培训。 虽然我认为这个想法很巧妙,但我仍然将其视为概念证明,而不是现实生活中的解决方案。无需键入一行代码(或只键入其中的几
我在WF4上遇到了一个非常奇怪的问题:当我使用Switch Activity 并决定字符串变量的值时,WF以某种方式将WF的参数视为字符串,而不是变量的名称。因此,我得到了不正确的结果。复制步骤:-创
WWF 能否处理同时“主动”并行处理数十条记录的高吞吐量场景? 我们希望构建一个每小时处理几千条记录的工作流程。每条记录最多需要一分钟来处理,因为它会进行外部 Web 服务调用。 我们正在测试 Win
在我的项目中,我有一个在多个实体上运行以完成业务交易的工作流程。表示工作流逻辑的最佳位置是什么?目前我只是创建一个“XXXManager”,它负责与实体对象协作以完成业务交易。还有其他选择吗? 最佳答
我想编写一个工作流应用程序,将链接路由到文档。路由基于机器而不是用户,因为我不知道谁将在给定的岗位上。例如,我有一个表格。它最初是在位置 A 填写的。现在我希望它转到位置 B 并让他们填写其余部分。最
在我们的项目中,我们需要一个规则引擎组件,经过一段时间的研究,我发现.NET Workflow 也有它的规则引擎。 .NET 工作流规则引擎和其他引擎之间是否有任何完整的比较列表,例如NxBRE、Dr
我认为这可能是一个简单的问题,但我似乎无法弄清楚。 我有一个简单地发送邮件的工作流程。在邮件的内容中,我 有一个超链接可以返回到我们的 SAP CRM 系统。我将一些参数传递给这个超链接。 工作流程工
我正在试用 Workflow 4.0,希望编写自定义事件来启动外部可执行文件,等待该过程完成,然后恢复工作流中的后续步骤。 我发现以下示例显示(靠近页面底部)如何编写一个事件来等待文件到达特定目录:
我有一个工作流,它将观察某些数据库并在它注意到触发器时启动其他工作流。我只希望这个“观察者”工作流程的一个实例在任何时间点运行;否则,如果有两个或更多正在运行,他们都会注意到更改并启动相同的工作流程,
使用 Windows Workflow Foundation WF4,我有一个带有 System.Guid 的自定义事件名为 UniqueId 的属性. 我希望用户能够将我的事件拖到工作流上,并让它自
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试重新托管 WF4 工作流设计器。在“导入”选项卡中,我希望默认导入一些命名空间。它看起来像这样: Imported namespaces http://imageshack.us/m/850
how to work with 2010 workflows using powershell 上有一些指南.有人可以向我指出如何对 2013 年的工作流程做同样的事情吗?它们不再列在 $list.
在哪里可以找到 Nintex Workflow 网络服务的文档? 网络服务可以在http://myservername/MyNintexSite/_vti_bin/nintexworkflow/wor
我创建了一个 Activity (CodeActivity) 来检索我居住的温度。 我不想将该事件添加到工作流中并将其连接到一个 if 语句/事件,该语句/事件可以根据我的温度参数做不同的事情。 但我
我是一名优秀的程序员,十分优秀!