java轻量级有限状态机 c端流程专用

c端流程专用 java轻量级有限状态机

java轻量级有限状态机

使用例子

//1.定义状态节点
StateImpl startState=new StateImpl("起始", StateType.Start);
StateImpl  isNewUser=new StateImpl("新用户",StateType.Middle);
StateImpl  isOldUser=new StateImpl("老用户",StateType.Middle);
StateImpl scoreNotEnought=new StateImpl("积分不足",StateType.End);
StateImpl  scoreEnought=new StateImpl("积分足够",StateType.Middle);
StateImpl  ok=new StateImpl("参与",StateType.End);
StateImpl  failed=new StateImpl("不参与",StateType.End);

//2. 定义状态图
//起始状态   输入                         活动是否关闭              转移到      失败、起始状态
startState.input(InFunc.newFuncWithParamLong("检查活动是否关闭",UsageExample::activityClosed)).transferTo(failed,startState);
//起始状态   输入                         检查是新用户老用户               转移到        新用户状态、老用户状态
startState.input(InFunc.newFuncWithParamLong("查询新老会员",UsageExample::checkIsItNewOrOldUser)).transferTo(isNewUser,isOldUser);
//老用户状态 输入                          检查积分是否足够          转移到       积分不够状态、积分足够状态
isOldUser.input(InFunc.newFunc("查询积分是否足够",UsageExample::scoreEnought)).transferTo(scoreNotEnought,scoreEnought);
//积分足够专改    输入                      扣减积分                转移到     成功、失败状态
scoreEnought.input(InFunc.newFunc("扣减积分",UsageExample::scoreExchange)).transferTo(ok,failed);

StateMachine machine=new StateMachine(startState);

//3. 喂给状态图
machine.feedInFuncs(activityId,userId);
machine.feedInFuncs(userQueryDto);
machine.feedInFuncs(exchangeDto);

运行结果:

(Start[起始])-----检查活动是否关闭---->(Start[起始])
(Start[起始])-----查询新老会员---->(Middle[老用户])
(Middle[老用户])-----查询积分是否足够---->(Middle[积分足够])
(Middle[积分足够])-----扣减积分---->(End[参与])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值