下面是我对LocalService服务类的改进想法。
实际上我想实现的是,外界只通知状态机需要改变状态并且可以传参数给状态机,具体如何改变,改变为何状态都由状态机自己处理。
做过状态机工作流的兄弟都知道,之所以LocalService要随状态机的变化而改变是因为Samples中的示例告诉我们,要为每一个状态写一个Trigger,然后在外部根据状态机当前的状态触发相应的Trigger来驱动状态机改变状态。我的想法是,只做一个WFEventTrigger,然后把每个状态的handleExternal中的EventName都设为统一的WFEventTrigger。在每个状态的handleExternal中加入一个ifElseBranchActivity,condition是callme
这样就可以在外部使用通用的代码来触发状态改变。LocalService也不需要随状态机的变化而改变了。
希望能够和大家交流一下这么做有什么优缺点,谢谢!