• jxTMS设计思想之编程模型


    jxTMS是以低成本快速定制为核心诉求的、SaaS模式的二次开发平台。本文讲述低成本快速开发思路中的编程模型。系列文章请访问:jxTMS设计思想

    作为一整套开发工具,说一千道一万,最核心的就是编程模型。影响jxTMS编程模型的来自笔者的两个经历。

    一次是很早以前一个小同事刚接触MVC模型,结果和我说说这个东东理解不了,还是命令式的好理解。

    一次是带一个java的高职实训班,一个for循环我就讲了一节课,结果越讲他们越糊涂!后来才发现,他们不理解计算机是如何工作的,总是用人的想法来想机器的行为。

    所以,在我开始构思低成本快速定制该如何实现时,我首先想到的就是要将编程的复杂度降低到这些小朋友能理解的程度上。

    而降低编程复杂度的关键就是简化的编程模型。在笔者看来,程序就是代表用户通过对数据的处理来求解问题。所以,编程模型就是用户操作和程序间的关系、程序与数据之间的关系。

    依据笔者的认识,jxTMS中的编程模型做了极致的简化:

    1、用户的操作与程序之间的关系采用的是:事件-响应模型。

    即用户的操作表现为触发一个事件,而该事件对应一个响应函数,只要该事件被触发,则jxTMS会在准备好数据库访问接口和上下文后调用这个函数。

    用户的操作只有两种事件:

    • prepareDisp事件:打开一个界面时触发

    • cmd事件:点击按钮、工具条之类时触发

    而在jxTMS中将一个函数绑定给某事件非常简单,利用python的修饰符能力,用event修饰符修饰一下就好:

    #故障报告界面中的【添加】按钮按下时的响应函数
    @myModule.event('cmd', 'newCase')
    def newCase(self, db, ctx):
        ...
    
    • 1
    • 2
    • 3
    • 4

    而所有的事件响应函数必须有两个参数,在事件响应函数被调用时由jxTMS准备好:

    • db:本次操作的数据库事务接口,事件响应函数中所有的数据库操作都是同一个数据库事务,正常执行完毕后即被提交到数据库中,而如果执行失败则该数据库事务会被回滚,失败点之前所有对数据库的修改将全部被撤销

    • ctx:上下文,代表了事件响应函数执行时的环境,包括当前用户、用户所在组织等的信息

    这样一来,只要用户在web界面上点击故障报告界面中的添加按钮,则newCase函数就会被调用了,同时其db、ctx两参数也都会被准备好。

    2、程序对数据的访问模型

    程序对数据的访问,一是对web中用户的输入输出,二是对数据库中的数据的访问。而jxTMS中这两者都非常简单。

    jxTMS中对web数据的输入输出:

    #读用户在web控件中输入的数据
    wv = self.getInput('控件所绑定的数据名')
    
    #输出数据到web控件
    self.setOutput('控件所绑定的数据名',value)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    而对数据库的操作也简单至极:

    jo = orm.create(db,'jxTMS平台所提供的内部数据类名')
    jo = pyORM.create(db,'开发者在data文件中自己定义的数据类名')
    jo = orm.getByID(db.getDBConn(),'数据类名',joid)
    jo.属性1 = 值1
    jo.属性2 = 值2
    jo.属性3 = 值3
    db.update(jo,'属性1','属性2','属性3')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上述语句就创建或从数据库中读取了一个数据对象,并对该对象进行了赋值,然后update一下就保存到了数据库中。

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

    注册到jxTMS

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

    如何用jxTMS开发一个功能

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

    jxTMS的HelloWorld

  • 相关阅读:
    基于HTML5的在线幻灯片编辑演示系统
    项目管理之知识管理
    ReentrantReadWriteLock 读写锁的使⽤
    docker企业单位私有镜像仓库 Harbor 搭建
    idea同一窗口启动多服务管理窗口(开启RunDashboard管理)
    【Spring系列】- Spring循环依赖
    JVM在线分析-解决问题的工具一(jinfo,jmap,jstack)
    【计算机网络】运输层:单方向传输报文管道利用的情况
    Allegro如何使用快捷键快速切换层面操作指导
    HTML非遗文化网页设计题材【京剧文化】HTML+CSS(大美中国 14页 带bootstarp)
  • 原文地址:https://blog.csdn.net/jxandrew/article/details/126179116