当前位置: 首页 > news >正文

北京网站建设亿玛酷适合5/百度网页

北京网站建设亿玛酷适合5,百度网页,美食网页设计模板中文,网站建设图片怎么调还是刚才的以二级审批请假流程为例。 绘制流程 首先创建 Papyrus 项目,选择 StateMachine 模板,绘制流程图如下: 然后创建 6 个 signal event 和与之绑定的 signal : 注意,在 Papyrus 图中,除了 State (状态) 和 Tra…

还是刚才的以二级审批请假流程为例。

绘制流程

首先创建 Papyrus 项目,选择 StateMachine 模板,绘制流程图如下:

然后创建 6 个 signal event 和与之绑定的 signal :

注意,在 Papyrus 图中,除了 State (状态) 和 Transition(迁移)之外,还有 Signal 和 Signal Event 的概念,它们对应于 StateMachine 中的 Event(事件)。其中 Signal 就是事件的名字(字符串常量)。

将 Tansition 和 Signal Event 绑定(设置 trigger)。

加载 uml 状态图

将 Papyrus 生成的 uml 文件放到 idea 的 resource 目录。
因为 State、Event 和 Transition 都定义在 UML 中了,所以 States 枚举和 Events 枚举不再需要,状态机的配置也简化了,直接从 UML 文件来加载:

@Overridepublic void configure(StateMachineModelConfigurer<String, String> model) throws Exception {model.withModel().factory(modelFactory());}@Beanpublic StateMachineModelFactory<String, String> modelFactory() {// 测试二级审批请假流程UmlStateMachineModelFactory factory = new UmlStateMachineModelFactory("classpath:model.uml");factory.setStateMachineComponentResolver(stateMachineComponentResolver());return factory;}

注意,这里 States 和 Events 的类型都变成了 String,毕竟在 UML 中不太好定义类型。
如果要注册 Action 或者 Guard,可以通过 Resolver 进行:

    @Beanpublic StateMachineComponentResolver<String, String> stateMachineComponentResolver() {DefaultStateMachineComponentResolver<String, String> resolver = new DefaultStateMachineComponentResolver<>();resolver.registerAction("myAction", myAction());resolver.registerGuard("myGuard", myGuard());return resolver;}public Action<String, String> myAction() {return new Action<String, String>() {@Overridepublic void execute(StateContext<String, String> context) {}};}public Guard<String, String> myGuard() {return new Guard<String, String>() {@Overridepublic boolean evaluate(StateContext<String, String> context) {return false;}};}

发送事件

跟之前一样,发送事件使用状态机的 sendEvent。只不过 Event 的类型统统是字符串,而且必须在 UML 中定义为 Signal。

 private BaseResponse sendEvent(String event,String leaveId){BaseResponse result = new BaseResponse();if(leaveId == null || leaveId.length()==0){result.success = false;result.message = "leaveId 不能为空";return result;}try {// 根据业务 id 获取状态persister.restore(stateMachine,leaveId);result.success = stateMachine.sendEvent(event);// 持久化状态机if (result.success) {persister.persist(stateMachine, leaveId);}JSONObject data = new JSONObject();result.message = result.success ? "执行成功":"执行失败";result.message = result.message + ",当前状态为:"+stateMachine.getState().getId();data.put("leaveId",leaveId);data.put("event",event);data.put("state",stateMachine.getState().getId());result.data = data;} catch (Exception e) {e.printStackTrace();result.message = e.getMessage();}finally {stateMachine.stop();return result;}}

结论

可以看到,通过 UML 方式绘制状态机,减少了在代码中定义 Event、State 和 Transition 的过程,但 UML 中必须通过额外的元素(Signal和 Signal Event)来定义事件,在目前来说 Spring StateMachine 只支持 Papyrus 绘制的 UML 图。

http://www.lbrq.cn/news/763579.html

相关文章:

  • 建网站那种服务器好/上海互联网公司排名
  • python可以做复杂网站/网站工具查询
  • 网站如何做提交的报名表/培训心得体会1000字通用
  • 设计师图片素材网站/关联词有哪些小学
  • 网站建设骗子/软文营销的本质
  • wordpress 首页可变区域/自己的网站怎么样推广优化
  • 桂林象鼻山属于哪个区/seo关键词优化排名软件
  • 网站开发论文答辩问题/长沙seo技术培训
  • wordpress 帝国cms/刷关键词优化排名
  • 黑龙江做网站公司/秦皇岛seo排名
  • 重庆渝兴建设有限公司网站/广告联盟app下载赚钱
  • 视觉做的比较好的国外网站/今日足球比赛分析推荐
  • 网站建设成本价/搜索引擎seo关键词优化
  • 注册公司流程和费用一共多少钱/沧州seo推广
  • 微网站开发需要多少钱/长春seo培训
  • 中信建设有限责任公司官网英文/南城网站优化公司
  • 网站开发记科目/怎么快速优化关键词排名
  • 邯郸做网站找谁/网络营销的具体形式种类
  • 上海建设官方网站/seo的优化策略有哪些
  • 上海建设工程安全质量监督总站网站/百度推广收费多少
  • 做网站应该考虑哪些问题/唐山seo排名外包
  • 安徽六安疫情最新情况/seo网站推广计划
  • 如何建立官方网站/流量推广怎么做
  • 网站开发框架图/今天刚刚发生的新闻
  • 泸州网站建设多少钱/今日头条新闻
  • 淘宝网站设计价格/网站托管服务商
  • 佛山做网站制作公司/网站运营策划书范文
  • 网站里面如何在新闻列表上显示hot/网站维护一年一般多少钱?
  • 注册公司那家网站做的比较好/周口网络推广公司
  • wordpress 茶叶模板/网站seo外链平台
  • Linux入门指南:基础开发工具---yum/apt
  • Linux软件下载菜单脚本
  • 【22-决策树】
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 【软考中级网络工程师】知识点之常用网络诊断和配置命令
  • Java 设计模式-组合模式