jxTMS设计思想之编程模型

110 篇文章 0 订阅
44 篇文章 0 订阅

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#读用户在web控件中输入的数据
wv = self.getInput('控件所绑定的数据名')

#输出数据到web控件
self.setOutput('控件所绑定的数据名',value)

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

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')

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

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

注册到jxTMS

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

如何用jxTMS开发一个功能

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

jxTMS的HelloWorld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值