可拖拽流程图的实现+代码按流程图执行

您所在的位置:网站首页 前端图形绘制流程图 可拖拽流程图的实现+代码按流程图执行

可拖拽流程图的实现+代码按流程图执行

2024-05-22 03:53| 来源: 网络整理| 查看: 265

因项目上要跟产品对接自动逻辑,此前都是使用企业微信或者口头对接,对接流程效率低下,对接完后经常因一方没想清楚,需要做代码层修改。因此项目需要做一个可拖拽,可版本管理的 流程建模页面。  

第一步 在线生成流程图,先解放对接过程中的效率和人力损耗问题。

先上目前效果:

实现工具:vue+elementui+g6+mysql

1.页面生成:具体API可以参考: https://github.com/antvis/g6 ,在这不做赘述。里面提供了react+g6的实现,用vue的话需要做些适配修改。

2.流程图提交保存时,将流程图相关nodes数据post给后台api接口入库。在这里做了密码验证,公司环境可以做用户权限验证。

表字段:nodes,edges,username,flowtime

3.历史记录查询,通过一个以提交时间为维度的下拉表拉取流程图数据,最终生成流程图。

选型时对比了go.js(收费),d3.js(非前端专业学习成本太高)等等,蓦然回首竟发现国内蚂蚁金服的G6 刚好满足我。

第二步 代码根据逻辑图自动执行。

下面以游戏业务上线后 大区推荐位 自动修改举例:

1.业务规则:代码语言:javascript复制 最高优先级 大区开服时间>7天 改为 无 次优先级 大区开服时间2小时 去掉 新 大区注册数800 去掉推荐 状态重复不修改 终止2.根据规则画出如下流程图:

3.根据流程图编写代码:

代码编写只用 if 和 else,方便以后根据流程图的后台数据,从流程图中直接生成代码。

代码语言:javascript复制#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/4/9 1:59 AM # @Author : brownwang # @Email : [email protected] # @File : checkflow.py # @web: https://www.bthlt.com def checkflow(): """ id:大区id optime:距离现在开服时间 reg:注册数 online:在线数 statu:目前状态 """ zones = [{'id': 1, 'optime': 1, 'reg': 1800, 'online': 300, 'statu': '新'}, {'id': 2, 'optime': 36, 'reg': 200, 'online': 3, 'statu': '推荐+新'}, {'id': 3, 'optime': 183, 'reg': 30000, 'online': 1000, 'statu': '推荐+新'}, {'id': 4, 'optime': 121, 'reg': 2000, 'online': 900, 'statu': '新'}, {'id': 5, 'optime': 32, 'reg': 300, 'online': 1, 'statu': '无'}, {'id': 6, 'optime': 232, 'reg': 300, 'online': 1, 'statu': '推荐'}, {'id': 7, 'optime': 1, 'reg': 8000, 'online': 300, 'statu': '推荐+新'}, {'id': 8, 'optime': 2, 'reg': 9000, 'online': 700, 'statu': '无'}] for zone in zones: if zone['optime'] < 2: if zone['reg'] < 26000: if zone['online'] < 800: if zone['statu'] != '推荐+新': print '大区{0}:执行修改推荐加+新任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['statu'] != '新': print '大区{0}:执行修改新任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['statu'] != '新': print '大区{0}:执行修改新任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['optime'] < 7 * 24: if zone['reg'] < 26000: if zone['online'] < 800: if zone['statu'] != '推荐': print '大区{0}:执行修改推荐任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['statu'] != '无': print '大区{0}:执行修改无任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['statu'] != '无': print '大区{0}:执行修改无任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) else: if zone['statu'] != '无': print '大区{0}:执行修改无任务'.format(zone['id']) else: print '大区{0}:终止'.format(zone['id']) checkflow()4.预期输出:

大区1:开服时间2 在线



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3