jxTMS是以低成本快速定制为核心诉求的、SaaS模式的二次开发平台,详见:jxTMS简介。本文是讲述jxTMS平台的系统结构和代码结构,整个系列请访问:jxTMS设计思想
jxTMS的系统结构如图:
考虑到安全以及弹性扩展的需要,jxTMS切分为了web和app两大系统,两者之间通过MQ进行勾连。web系统只会访问存有用户登录信息等的公共数据库,并只负责用户登录以及和用户的交互【其中的大量工作还是由用户浏览器根据js代码来完成的,包括web界面的动态绘制、自动计算、数据检查、动态弹窗等】,其即便因暴露在互联网中被攻破,也不会对用户的数据资产产生任何的威胁。
注1:web系统的主要工作就是将前端数据转发到各组织,只有登录需要和公共数据库打交道。而登录功能则是用java所编写后经过反复测试的,更没有其它本地访问操作以尽可能的提高web服务的安全防护
注2:jxTMS的登录是二级登录,即用户首先用用户名密码登录到web系统中,然后web系统才会将登录请求转发到组织中,组织还需要检查该用户在组织中的状态,如果不存在该用户或该用户已经离职,则拒绝其登录,而由于用户界面全部由所在组织中各capa发送界面描述来动态绘制的,所以该用户只会看到一片空白的界面
用户系统以组织为单位运行在应用服务器上,每个组织通过MQ提供自己的应用服务,用户先登录到web服务器上,然后通过MQ以数据交换的方式来访问本组织的应用服务。而组织之间实现了彼此的隔离,这就确保了用户数据资产的绝对安全。
每个组织以模块为单位来组织代码、界面、数据源等可定制部件,数个相关的模块组成一个代码空间,同一源头的空间放到一个目录下。其定制文件的目录结构如下:
即一个模块就是一个目录,其中包含了5种文件:
data:定义数据类,jxTMS根据其中所定的各数据类,在组织私有数据库中生成同名的数据表
sql:定义数据源,即用来从组织私有数据库中查询数据的类sql语法定义的查询语句
web:定义web界面
capa.py:定义处理本模块业务逻辑的capa
op.py:定义本模块中各操作的访问入口
而一个代码目录就是一个三层的目录结构,第一层子目录是代码空间、第二层子目录是模块,模块中存放的上述5种定义文件。
jxTMS中有三种这样的代码目录:
公共模块,jxTMS提供给每个组织用来完成组织管理、人员导入、角色映射等公共的基础功能。这种公共模块保存在的指定系统模块代码目录中
用户自定义模块,本组织的自用功能。这些模块位于各组织的组织用户的home目录下的codeDefine目录中
第三方模块,由第三方提供的诸如财务管理、ERP、进销存、CRM等专业功能。这些模块保存在专门为第三方模块预留的目录中
而用户的功能升级非常简单,用新版本的定制文件覆盖原文件后,或订购了新的第三方模块后,只要manager用户执行一次热机刷新就可以了。
目前jxTMS已经开放个人注册试用,欢迎大家注册试用:
下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:
下面的系列文章讲述了jxTMS的一些基本功能: