2009-12-22 117 views
7

当谈到实施业务流程时,您更喜欢什么(从您的开发人员的角度)?BPMS还是纯粹的编程?

一个业务流程管理系统(BPMS)或只是你最喜欢的IDE与所需的工具和框架(例如报告工具)?

从你的角度来看,与使用个人工具和框架的IDE相比,BPMS最大的好处是什么?

好的。也许我应该更具体一些......我知道一个特定的BPMS,它可以通过配置规则来实现业务流程。但作为一名开发人员,我很难与系统一起工作。我想与我可以重构的文本文件一起工作,我希望能够为我必须做的工作选择正确的技术或框架。相反,系统迫使我进行配置。

有规则,我可以使用Java,但即使如此,我必须坚持系统编辑器而不智能感知等

因此,这使我对我自己的问题的答案 - 我想用我习惯于使用工具,而不必学习如何使用BPMS(至少我知道),因为它限制了我不仅仅是帮助。我所知道的BPMS是一个难以逃脱的框架!目前,我更喜欢像Grail这样的框架,而不是我知道的任何BPMS。

所以也许更具体的问题是:你是否感觉相同,还是有BPMSes支持你在开发者身边,像开发人员一样思考,或者他们中的大多数人迫使你以不同的方式做你的工作?

+0

另请参阅http://stackoverflow.com/questions/214122/is-bpm-in-your-mind – rdmueller 2009-12-22 19:16:25

回答

7

不知道你到底在问什么,但选择BPM与纯编程将取决于需求。 “业务流程”在软件工程中是一个相对模糊的术语。

这里有几个标准来评估你的需求:

  • 规则复杂性 - 体现在你的进程的决定/规则简单,复杂的,可配置的,硬编码?
  • 流程的波动性 - 您的流程多久改变一次?谁应该能够做出改变?
  • 集成需求 - 您的流程是使用多种异构服务实现的,还是全部使用相同的语言实现?
  • 同步/异步 - 您的进程是否需要处理异步操作“长时间运行”?
  • 人类任务 - 您的过程是否涉及人际交互,并根据任务的职责将任务分配/路由给人员?
  • 监控流程 - 您希望在现有流程实例上执行的控制级别是多少?你需要审核行动等吗?
  • 错误处理 - 根据以前的观点,您打算如何处理错误或重试错误的流程执行?

根据这些问题的答案,你可能会发现你的进程更接近simple state图表与可以在顺序执行一些动作和决定,否则你可能会意识到你需要的东西更精细,而且你不想重新实现所有这一切。

之间平原编程功能完善的BPM溶液(例如Oracle BPM suite含有BPELrule engine等),有中间解jBPMWindows Workflow Foundation和可能很多其他人。这些中间解决方案通常是很好的折衷。

4

BPMS--很多常见的商业案例,用例都已经实现。所以你只需要知道如何使用它。对于常见的工作流程,您甚至不需要编写一行代码,但大多数情况下,您必须编写一些脚本来涵盖尚未实现的内容。

平原编程 - 只需使用IDE来破解代码即可。积极的一面:更多的控制。负面?花了很多时间重写样板代码。你必须维护它们。

所以简而言之,我更喜欢业务流程管理系统。我建议的一个是ProcessMaker。它具有一个直观的流程设计器,允许您通过拖放来设计工作流程。并且您始终可以编写trigger以扩展过程功能。它也是开源的。

+1

因此,您可以更好地开始使用BPMS,因为您已经拥有系统并且不必关心登录屏幕,会话处理等......但是如果你需要实现很多流程,这仍然有效吗?我的意思是在第一个过程中,您已经实现了您可以在第二个过程中重复使用的样板代码... – rdmueller 2009-12-22 16:51:46

+1

是的,有了BPMS,它的速度还是更快 – Graviton 2009-12-23 01:22:02

10

根据我的经验,BPMS系统提供的开发环境是第三流的,没有什么效果,并且实际上迫使您难以维护,设计不佳的代码(由于其局限性)。几乎所有我熟悉的BPMS系统(由该公司以其数据库命名的BPMS系统)提供的“功能”(UI,集成等)都不值得我们支付的钱。

如果您不得不使用BPMS作为开发人员,我的建议是在常规开发环境(如Java或.Net)中尽可能多地构建您的应用程序,并尽可能少地在BPMS环境中构建本身,并融合两者。 BPMS中唯一应该做的事情是使业务流程起作用的最低限度。

+0

这也是我的经验。我所看到的唯一问题是工作流引擎和传统开发之间没有干净的界面。我想不可能,因为(工作流程和应用程序)都试图推动流程... – rdmueller 2011-08-04 06:46:09

8

我已经与Biztalk在过去和最近与JBPM合作过。我的意见是偏向对BPM的,原因如下:

  1. 陡峭的学习曲线:为了使一个过程的工作,我必须了解系统和编辑工作。开发人员很难理解系统,更不用说业务用户。拖放和可视化表示是一个很棒的演示工具。它确实给管理者留下了深刻的印象(谁最终为此付出了代价),但开发人员的生产力却下降了。

  2. 非开发人员改变工作流程:我还没有看到一个BPM解决方案完美无缺。虽然它看起来不像代码,但右键单击该框并且必须放置一些代码,否则它不会起作用。所以你绝对需要一个开发人员来做到这一点。最好的部分是,它既不是开发人员友好的,也不是业务用户友好的,只是演示用户友好。

  3. 可测试性和重构:测试驱动器BPMS几乎是不可能的。你确实有'单元测试框架'的广告,但其中大多数是黑客和难以使用。最近我尝试了JBPM之一。最后,我写了大量的胶水代码和假工作流程处理程序来使其工作。对我而言,交易断路器是重构。如果业务从根本上改变了业务流程应该如何看待的思想,那么祝好运重新安排这些框,因为重新安排它们将不起作用,所有绑定到框的变量也需要重新排列。我更喜欢IDE的强大功能和测试来重构我的业务流程。

如果您的应用程序有工作流程,那么您可以尝试一个工作流程库(带或不带持久状态)。它仍然可以管理您的工作流程,而不会出现BPM带来的所有问题。如果业务用户需要了解代码,那么让业务人员准备好流程图并将其转化为良好的域驱动代码。使用黄瓜风格验收测试将开发人员和业务组合在一起。一个BPM只是试图做太多事情并最终做所有这些事情的结果。