美文网首页
android 辅助开发插件

android 辅助开发插件

作者: 170512 | 来源:发表于2019-03-12 14:18 被阅读0次

介绍一下项目中使用的android辅助开发插件 https://github.com/fclassroom/ifelse

像这样一个流程大概要编写多少行代码?100行?流程有可能任意调整,中间加一些提示、等待,如何做到灵活修改?Rxjava、回调加判断、写详细注释便于以后维护?

 ifelse 这款插件可以帮你解决这些问题。把流程按照产品定义画出来,按模版生成代码后一行代码进行调用。

    sendMessage(Event.B_INIT);

    当然这些通用节点是需要提前配置、实现的,把节点中拖拽进流程图中配置。

配置好的节点

使用辅助插件具体有哪些好处

    业务可视化绘制、UI与业务一体集成,实现一个业务处理的连贯性。

    复杂业务不用写代码,开发维护省时省力。

    页面统一管理便于查看整个项目的页面层次、结构、显示先后顺序。

    流程统一管理便于定位业务处理逻辑

    基于模版代码风格统一,模版语言为groovy便于扩展IOS等其他平台。

实现步骤

    1.安装插件

    2.数据配置

    3.事件定义

    3.节点配置&实现

    4.页面配置

    5.流程配置&业务绘制

    6.模版定义

    7.运行按模版生成辅助代码

插件安装

插件地址

演示项目下载

演示项目

查看项目引导

项目向导 事件、页面、流程编辑器

事件 事件驱动开发使模块、页面间耦合度降低

页面 可配置页面事件、类名、模版。通过双击或选中后的属性按钮定位页面代码,跳转目标可配置 points.json R.groovy

流程 相关联流程拖拽到一起,通过双击或选中后的属性按钮定位具体流程实现,跳转目标可配置 points.json R.groovy

流程实现

    流程起始点唯一

    通过拖拽加入流程。

    选中节点编辑节点输入输出属性。

    右键拖拽实现节点间连线。

    选中连线编辑节点跳转条件。

    通过双击或选中后的属性按钮定位节点具体实现类

流程调试、执行顺序查看。

W/系统初始化-225921130: point(5)[0] 起始点 :Start

W/系统初始化-225921130: Start params:null

W/系统初始化-225921130: point(11)[1] 权限判断 :PermUtil

W/系统初始化-225921130: point(27)[2] 百度语音初始化 :TTSInit

W/系统初始化-225921130: [$init_baidu_result] is OK :true

W/系统初始化-225921130: point(8)[3] 朗读-初始化提示 :TTS

W/系统初始化-225921130: tts onSynthesizeStart:0

W/系统初始化-225921130: tts onSpeechFinish:0

W/系统初始化-225921130: point(38)[4] 本地数据 :UserData

W/系统初始化-225921130: [$inited] is OK :false

W/系统初始化-225921130: point(32)[5] 单词导入 :BWordImport

W/系统初始化-225921130: [$init_word] is OK :true

W/系统初始化-225921130: point(39)[6] 保存数据 :UserSaveData

W/系统初始化-225921130: point(34)[7] 朗读-初始化成功 :TTS

W/系统初始化-225921130: tts onSynthesizeStart:0

W/系统初始化-225921130: tts onSpeechFinish:0

W/系统初始化-225921130: point(45)[8] 初始化成功 :EventSend

W/系统初始化-225921130: Event:B_INIT_SUCCESS

W/系统初始化-225921130: flow is over. duration:7784

拷贝 log 后 选择对应流程 ctrl + i 导入log

显示执行顺序加快调试时间

在流程中定义变量

$ 流程内可见变量 例如:$a,$b

# 应用内静态变量  例如:#a,#b

节点实现

节点配置json

    {

        "classz": "org.ifelse.points.ObjectRead", // 实现类

        "icon": "/iedata/icons/arrayobj.png",    //节点图标

        "id": "500101",                          //唯一id

        "name": "对象取值",                        //对应名字

        "doubleclick": "R.open_point",            //双击后的处理 R.groovy

        "mproperties": [                          //输入输出配置 按照实现类进行配置

            {

                "key":"data",

                "name":"data"

                "args":""          //可以配置可选类型 boolean Event...定义在project.json :fieldTypes

            },

            {

                "key":"field",

                "name":"field"

            },

            {

                "key":"value",

                "name":"value"

            },

            {

                "key":"descript",  //必选属性

                "name":"descript",

                "value": "对象取值"

            }

        ]

    },

节点实现代码,通常为通用的输入输出处理

public class ObjectRead extends FlowPoint {

final static String key_data = "data";

final static String key_field = "field";

final static String key_value = "value";

@Override

public void run(FlowBox flowBox) throws Exception {

    Object obj = getVarValue(flowBox,key_data);

    String field = getVarName(flowBox,key_field);

    String value = getVarName(flowBox,key_value);

    String[] fields = field.split(",");

    String[] values = value.split(",");

    if( obj != null ) {

        Class classz = obj.getClass();

        for(int i=0;i<fields.length;i++){

            Field ff = classz.getDeclaredField(fields[i]);

            ff.setAccessible(true);

            Object vobj = ff.get(obj);

            setValue(flowBox,values[i],vobj);

        }

    }

    flowBox.next();

}

含有UI交互的流程

模版编辑 实现代码统一、快速集成。

目录结构

/iedata 插件数据目录

    /flows      流程目录

    /icons      图标目录

    /script    插件调用脚本目录

    /template  模版目录

    Event.ie    事件配置数据文件

    Flows.ie    流程管理文件

    Forms.ie    页面管理文件

    points.json 节点配置文件

    project.json 插件配置文件

src/..../vldata  模版生成文件

src/..../vl      框架文件

src/..../points  通用节点实现目录

运行

运行log

apk下载

总结

1.整个插件需要了解的东西还是很多,通过示例项目入手最为方便。

2.实现了页面、复杂业务的可视化管理。

3.在复杂业务调整过程中完全可以和产品一起画流程,避免沟通理解问题造成的不一致。

4.项目的迭代维护成本降低,节省开发人员了解阅读代码时间。

5.都是按照模版生成代码,所以可以任意修改模版生成适合自己项目代码。

相关文章

网友评论

      本文标题:android 辅助开发插件

      本文链接:https://www.haomeiwen.com/subject/wyagpqtx.html