【问题标题】:Non deterministic finite state machine in java for complex CRM logicjava中用于复杂CRM逻辑的非确定性有限状态机
【发布时间】:2015-08-30 21:49:13
【问题描述】:

正在考虑在 Java 中实现非确定性有限状态机。 已经检查了 easyflow 和许多其他此类库,但它们提供的是确定性有限状态机。

例如。 用例。 用户处于暂停状态并且有 100 美元的账单到期,现在他可以用现金券重新填充他的帐户。如果他补充的金额使他的用户余额小于 100,那么他将继续处于暂停状态,如果他的帐户余额达到等于或超过 100 美元,那么用户将被发送到 Active 状态。

因此,该事件是相同的“补充”,但用户对他的用户余额表示非常多。所以 FSM 不是确定性的。

有没有办法处理这个案子??

与第二个想法相反,我可以使用像 drools 这样的规则引擎来实现这种不确定的 FSM(或某种 FSM)。

Oracle BRM 似乎在使用某种状态机。关于如何在 crm 系统中实现 ND-FSM 的任何想法。最常用的库(java)是什么。

【问题讨论】:

  • 为什么是-1 ??我还提到了我尝试过的库,以及我认为人们已经实施的用例。我还提到了使用流口水还可以做什么。 !! :(

标签: java fsm non-deterministic


【解决方案1】:

您的状态机不是“不确定的”,而只是在某些转换上需要guards,这会减少处理程序中的额外转换。我不知道您正在使用的库并且它没有文档所以我不知道它是否支持警卫,因此当处于“收到补充”状态时,您的处理程序可以立即检查结果余额,触发任一转换到任一“暂停”或“活动”

【讨论】:

  • 您能否推荐任何行业范围内使用的库。乍一看,code.google.com/p/tungsten-fsm/wiki/… 看起来很有希望。
  • 其次,如果我有分层实体,我有不同的状态要管理。例如,在充值时,首先需要将凭证状态设置为已使用,然后需要将用户状态从暂停或活动设置为活动。那么它的服务(可能不止一个)需要改变。等等许多级联操作。这样做是否正确,或者,这不应该只在 FSM 中实现。 ??有同样的想法吗??
  • @ManMohanVyas 我最近没有进入 Java 生态系统,几年前切换到 C#,所以不能推荐产品。但是,我见过的绝大多数状态机派生代码都是经过编译而不是解释的(即代码是从状态机模型生成然后编译的,而不是从对象图构建状态机)。
  • 如果我可以从挂起状态转移到活动或非活动状态,那么它是非确定性状态.. 对吗??
  • @ManMohanVyas 如果没有什么可以确定它最终处于两种状态中的哪一种,是的。但是,在您的情况下,您可以使用守卫来检查帐户中的金额,从而确定应该进入哪个状态。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
相关资源
最近更新 更多