我的初始想法是在域对象中滚动我自己的状态机功能.然后我用于状态机引擎和工作流引擎.现在我迷路了
我想对其他开发人员解决这个问题提出意见.你使用Drools,Jbpm,Activiti吗?还是一些更简单的状态机引擎?
我一直在阅读一些关于Drools,Jbpm的文档.他们看起来很不错但是,似乎我只需要这些库提供的一小部分功能.
我使用Grails作为这个,但当然也很容易使用Java库.
解决方法
工作流引擎通常还能够定义业务交易和规则运行很长.例如,您可以拥有授权采购订单的工作流程,其中第一步是输入有关需要购买的一些信息,那么如果购买的价格低于100美元,那么您可以立即制定规则,如果它的在$100& $2000的线路经理可以,如果更多的话,将其发送给其他人进行批准…等等.这些类型的业务规则往往会随着数量的增加而变化,或者公司的业务政策发生变化.所以在这些情况下使用工作流引擎是有意义的.可以从工作流引擎中受益的复杂业务交易的其他好例子是提供保险索赔,授权贷款或抵押贷款,评估客户的信用申请…等.这些业务交易往往会经过几个人/部门并花费几个小时到几天或几周才能完成.
规则引擎有利于从应用程序中提取复杂但改变的规则.假设您是在美国,加拿大,英国,德国和法国的客户的在线零售商.您需要对您在网上商店销售的产品征收税款,但计算税金的规则因国家而异,省内省份不同.也有一些事情在一省省免税,但不在其他省份.规则引擎对于这些类型的复杂业务规则是伟大的,只要政府改变其税收政策,可以改变.规则引擎可以给你一个正确的方式,你只需要去规则引擎说我想要运行规则10,这里是规则#10 x,y,z的输入,你得到一个答案.
规则引擎和工作流引擎之间的主要区别是,规则引擎不跟踪事务的状态,它应该是无状态的仅在您提供的输入上运行.工作流引擎是有状态的,它必须知道当前状态是工作流,并且必须将该状态保存到数据库.工作流引擎还等待来自外部来源(例如人员或系统)的输入.
从您对应用程序的描述中,我将只编写一些groovy类来计算下一个机票的状态,并确保该类有良好的文档记录,并在几年内轻松更新.我认为规则引擎和工作流引擎对于你的情况来说是过分的,你需要花多长时间才能设置和使用它们要大得多,这样你就可以在groovy中编写代码了.如果随着时间的推移,您发现需要规则引擎和工作流引擎的复杂性,我将付出代价而不是现在,保持简单始终是最佳选择.