Java 工作流引擎用例

Java 工作流引擎用例,java,workflow,Java,Workflow,我们遇到了一个问题,数据库表必须更新特定实体的状态。目前,它的所有Java代码都带有大量的if条件和状态更新。我一直在考虑使用工作流引擎,因为将来可能会有多个流。在这里使用工作流引擎是不是太过分了。。。你的底线在哪里?这取决于用例的复杂性 在一个简单的用例中,我们有一个数据库列,由多个消费者为订单生命周期的每个阶段更新。这是通过web服务调用数据库来完成的。 简单的生命周期从确认>接受/拒绝>完成>关闭。所有这些都在同一列的同一个表中。这是在没有工作流的java类中执行的 工作流引擎适用于更复杂

我们遇到了一个问题,数据库表必须更新特定实体的状态。目前,它的所有Java代码都带有大量的if条件和状态更新。我一直在考虑使用工作流引擎,因为将来可能会有多个流。在这里使用工作流引擎是不是太过分了。。。你的底线在哪里?

这取决于用例的复杂性

在一个简单的用例中,我们有一个数据库列,由多个消费者为订单生命周期的每个阶段更新。这是通过web服务调用数据库来完成的。 简单的生命周期从确认>接受/拒绝>完成>关闭。所有这些都在同一列的同一个表中。这是在没有工作流的java类中执行的

工作流引擎适用于更复杂的用例,该用例涉及对多个数据提供者的操作,例如:数据库或内容管理或文档管理或搜索引擎、多个并行过程、基于前一步的成功/失败进行分叉、在某一步发送电子邮件、离线错误警报


你可以看到实现。

我认为你应该考虑一个工作流引擎。工作流应该与应用程序逻辑分离

原因:

  • 可维护:更易于修改、添加新流,甚至更易于被另一个工作流引擎替换
  • 业务流程管理:工作流主要是BPM的软件表示。因此,它通常是由工艺设计师(非技术人员)设计的。因此,在应用程序内部编写代码不是一个好主意。相反,应该使用支持图形化工作流设计的BPM产品,如ALBPM或JPBM
  • 监控业务流:它们通常由高层管理者监控,并用于制定战略决策
  • 更容易进行数据挖掘/报告/统计
  • ALBPM(现在的Oracle BPM):是Oracle的一种商业工具,适用于大范围项目

    我的建议是。JBOSS的开源工具。与ALBPM不同,ALBPM需要单独的数据库和应用服务器,它可以与应用程序打包,并作为应用程序中的另一个模块运行。我认为适合你的项目

    我们遇到了一个问题,数据库表必须更新特定实体的状态。目前,它的所有Java代码都带有大量的if条件和状态更新

    听起来很准时,不需要在工作流参与者之间协调操作


    也许规则引擎更适合这种情况。可能是一个很好的候选人。如果您使用的是Spring,那么这是一篇关于如何实现您的需求的好文章


    有一项要求,即每个州都应该能够过渡到其他州。因此,现在对于每个新状态,我必须添加转换到每个现有状态的操作,并且每个现有状态都必须有移动到新状态的操作。是否有以非重复方式处理这些问题的工作流解决方案?@ktaylorjohn-当然有一个阶段是退出。伊卡洛斯,你是不是和wwu论坛中的伊卡洛斯一样?谢谢。您可能知道关于Drools与Spring集成的任何好资源吗?在这里找到->Drool与Spring。谢谢