• jxTMS设计思想之流程开发(一)


    jxTMS是以低成本快速定制为核心诉求的、SaaS模式的二次开发平台,详见:jxTMS简介。本文是讲述jxTMS平台中流程部分是如何设计的,整个系列请访问:jxTMS设计思想

    开发一个流程包括哪些工作呢?!

    • 界面

    • 流程定义

    • 各节点的业务逻辑

    • 入口

    本系列文章上来就分析过低成本定制的关键点就是:尽可能的一个人完成所有开发工作以及要尽可能的简单。流程的开发同样如此。

    界面

    流程的界面设计就是按通常的界面进行设计就好。只需要如下处理:

    1、必须继承viewWebInterface函数,并返回本流程的查看界面

    jxTMS中很多时候都需要获得【查看详情】入口,这一入口主要通过self.getViewA函数取的。有了该入口,就可以在任意地方都放置一个该入口供用户随时查看。如父任务创建了一个子任务,那就可以在查看子任务时放置一个:本任务由【xxx】创建,并放置查看父任务的工具条。这就非常有助于用户对当前任务的理解。

    而viewWebInterface函数将被getViewA调用来设置查看时要显示的界面。

    在显示快照等功能时,都必须使用到getViewA来设置查看快照建立时的界面。

    2、流程的界面是由一块块的子界面所组成的,每个子界面对应一个环节,该子界面应增加一个属性:cover=true

    大家想一下,一个流程有多个环节,每个环节对应一个操作成员、其有一块其在任务分发给到他时可操作的子界面,那该成员是不是可以操作【输入、修改】自己所负责的这个子界面【仅限任务分发给到他时】,但对其它环节的子界面就只能查看了?

    这就意味着流程中的任一环节,都必须有两套界面,一套用来负责本环节操作的成员执行时进行输入或修改,一套是用来在其他人员来查看时用来显示本环节的信息。

    这就意味着开发者需要制作两套界面,如果流程需要修改,那就必须同时在两套中同时修改。大家知道,这就是诱发bug。

    所以这种方案会大大增加开发成本,包括两倍的开发成本和更多倍的维护成本!

    强调低成本定制的jxTMS肯定不能接受,而采用的是:就用一套界面,然后用一个透明的遮罩给遮挡上;而在将流程分发给某成员执行某个环节的任务时,就将该环节所对应部分的遮罩取消即可。

    3、流程各子界面都会有一些相似的部分、相应的各环节的操作中也都有一些相似的处理。如下图:

    企业微信应用

    大家看到【审核】、【审批】两个子界面有点暗,这就是这两个子界面用遮罩遮挡起来了。

    大家看一下,【申请人说明】、【审核】、【审批】这三个子界面都有:意见、签发时间、签发人这三项,尤其是【审核】、【审批】,其子界面也只有这三项数据。

    那么,如果这三项无法被自动处理,那我们就需要在各节点的业务逻辑中编程来保存这三项数据。而如果我们能自动处理这三项的话,则所有只包括这三项数据的中间环节就都可以省去该环节的业务逻辑处理,而全部由jxTMS自动化完成了。

    但是,根据jxTMS的设计原则:每个数据控件都必须绑定一个唯一的数据名。其实这也是自然的,总不能总经理的意见显示到经理的意见那。

    因此,jxTMS强制要求各子界面的【同意】、【拒绝】、【补充说明】这些功能按钮所触发的事件统一是cmd型的simpleFlowDual事件,并且约定其参数应包括:

    • flowName:流程名

    • nodeName:节点名

    • active:动作,目前支持三个:accept/同意、reject/拒绝、replenish/补充说明、

    • signBy:本子界面中签发人控件所对应的数据名

    • signDate:本子界面中签发时间控件所对应的数据名

    则在【同意】、【拒绝】这些按钮被按下后,simpleFlowDual这个jxTMS内置的流程节点操作处理函数就会自动将当前时间写给signDate所指定的数据中、从上下文中查的当前用户的名字写给signBy所指定的数据中。从而,一般的中间环节就免去了业务处理逻辑的编程工作。

    流程定义

    流程定义非常简单,就是想清楚定义一个流程到底需要哪些工作:

    • 一个总界面

    • 包括哪些环节,每个环节必须指定:节点名【给机器用的】、节点文本【显示给人看的】、子界面、谁来执行,其它就是前面讲的能否跳过

    注:节点名和节点文本都是节点,只不过一个是给人看,一个给机器用。给人看好理解,用中文短语对广大的用户比较友好。那为什么就不能直接用这个短语也给机器用的。这是由于这些东东也会显示到日志中、数据库中,而中文在后台维护的时候,不但输入麻烦,有时根本输入不了:(

    • 节点间的跳转,前面讲过,jxTMS的简易流程其实是流程的子集,所以其实也是可以在各节点间跳来跳去的,但再次强调,尽量还是用默认的方式就好,不熟悉的话,尽量不要自己定义跳转

    然后定义一套语法,由开发者用来定义自己的流程就好了。相关语法请参考jxTMS的简易流程

    流程的定义,jxTMS并未如web界面、数据类等放到文件中,而是放到功能点的一个空函数的doc中,然后用simpleFlow修饰符对这个空函数进行修饰就好。

    这是由于在jxTMS中,将web界面、入口、数据类、数据源、功能点视为基础性部件,所以放入文件中进行定义,而其它如流程、业务规则等都视为依托功能点存在的辅助性部件,放入功能点中某些空函数的doc中,然后用相应的修饰符进行修饰的方式进行装载。这主要是出于jxTMS热机刷新的需要。

    目前jxTMS已经开放个人注册试用,欢迎大家注册试用:

    注册到jxTMS

    下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

    如何用jxTMS开发一个功能

    下面的系列文章讲述了jxTMS的一些基本功能:

    jxTMS的HelloWorld

  • 相关阅读:
    bp神经网络是用来干嘛的,bp神经网络和神经网络
    Hbase API
    netty - TimerWheel
    GPT4RoI: Instruction Tuning Large Language Model on Region-of-Interest
    模态逻辑介绍
    HTML 笔记:初识 HTML(HTML文本标签、文本列表、嵌入图片、背景色、网页链接)
    vue3 如何给表单添加表单效验+正则表达式
    华为设备配置BFD与接口联动(触发与BFD联动的接口物理状态变为Down)
    TI Sitara系列 AM64x开发板——TSN通信测试手册(下)
    BIOS 如何确定引导扇区的位置
  • 原文地址:https://blog.csdn.net/jxandrew/article/details/126343502