前言
OneCode 集成工具(以下简称 ESD),是 OneCode 代码的集成开发环境。ESD 面向的用户是专业的程序员,如果您不是专业的编程工作者需要先行了解一些 JAVA 语言相关基础知识以及其编译基础以便于方便自行下载编译。
一,为什么要做 ESD?
低代码不是一个新兴的概念,但将低代码作为一个独立的编程语言体系,独立的开发方法却是最近几年才被大家所接受的理念。但如大多新技术一样都会有一个成熟的过程,这个过程中除了技术本身的发展之外,其相关辅助的工具集,开发群体生态也是非常重要的一个部分。ESD 最初的版本只是为了方便团队协作将 OneCode (RAD)设计器以门户的方式开放给业务及技术开发者方便大家协同工作。随着项目及团队的技术演进,ESD 也从单一的门户逐步完成了后端代码的编译,独立服务器的管理及部署。直到今天经过几轮的重构将其开放出来作为一个开源的项目。
二,ESD 能做什么?
首先,ESD 是一组工具集,通过 ESD 开发者可以以最快最简介的方式快速的上手 OneCode,将设计器完成的设计文件转换为真正的代码工程发布部署。
在完成设计向代码的转换后,ESD 将作为代码与设计之间的桥接工具,将页面设计器(RAD),领域模型工具(DSM),OneCode 真实代码(RealCode) 三者之间有机的组合起来,实现三者之间的转换应用。
ESD 也是作为 OneCode 项目的管理工具,提供工程版本支持,团队协作支持,以及部署应用等功能支持。
三,ESD 开源结构说明
(1)开源协议声明开源地址:https://gitee.com/wenzhang77/ocstudio
ESD 本身采用,GPL3.0 协议。该协议允许用户商业使用,但如果直接针对改程序进行改造则必须遵循 GPL 协议。下载源码从 pom 编译依赖来看,ESD 主要依赖的为 OneCode 基础包以及相关插件是采用的是更为宽泛的 MIT 协议。
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-common-client</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-vfs-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-server</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-org-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-index-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-iot-webclient</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-database</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-esdstudio</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-db</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-org</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-formula</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-bpd</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-right</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-sysmanager</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-nav</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-bpm-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-dsm</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-plugins-bpm</artifactId>
<version>1.0.2</version>
</dependency>
复制代码
总结一下:
(1)直接使用 ESD 免费,可以“魔改"ESD,但不能将魔改的版本作为商业版本二次销售。(2)ESD 依赖的 OneCode 基础包以及其插件,仍然遵循 MIT 协议。如果二次开发者在有一定的工具开发能力的话,可以在参考 ESD 的基础上重新构建自有的独立知识产权的 OneCode 开发工具。
(2)如何编译 ESD 源码如何编译 ESD 源码,可以参照 OneCode 编译视频介绍。
(3)ESD 服务工程依赖
ESD 是面向开发者的 Studio 工具 ,ESD 运行需要依赖一些集成环境来支持,OneCode 也为这些提供了一些默认的微服务实现。包括:开发代码协同管理的 onecode-vfs 虚拟目录服务,onecode-org 用户认证,onecode-cluster 集群节点管理,以及其他应用类服务如:onecode-bpm 流程服务,onecode-iot 物联网应用支持,onecode-jmq 消息服务,onecode-index 检索服务, 从依赖的 jar 包来看,每一组服务,onecode 也都提供了独立的 SDK 支持方便集成调用。分别对应的基于 MIT 协议的驱动服务包。
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-vfs-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-org-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-index-web</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-iot-webclient</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>cn.raddev</groupId>
<artifactId>onecode-bpm-web</artifactId>
<version>1.0.2</version>
</dependency>
复制代码
(4)ESD 服务配置
ESD 的配置文件比较多,由于篇幅关系就不再一一做解说了,今天着重描述一下,集群相关的服务配置。/resource/useresbbean_config.xml
<actionContextClass>
com.ds.context.MinServerActionContextImpl
</actionContextClass>
<configid>esb</configid>
<esb>
<cnname>本地服务</cnname>
<path>/../lib/:^onecode.*\.jar;./lib/:^onecode.*\.jar;</path>
</esb>
<configid>local</configid>
<local>
<templetname>检索本地Class</templetname>
<path>*com.ds</path>
</local>
<configid>remoteService</configid>
<remoteService>
<path>remoteService</path>
<cnname>集群订阅服务</cnname>
<expressionTemManager>com.ds.web.client.RemoteTempXMLProxy</expressionTemManager>
</remoteService>
<configid>bpmservice</configid>
<bpmservice>
<cnname>工作流服务</cnname>
<path>bpm_tempbean_config.xml</path>
<tokenType>user</tokenType>
<serverUrl>http://bpm.raddev.cn:9080</serverUrl>
</bpmservice>
<configid>vfsnamenode</configid>
<vfsnamenode>
<cnname>虚拟目录</cnname>
<path>vfs_tempbean_config.xml</path>
<tokenType>admin</tokenType>
<serverUrl>http://data-vfsnamenode.raddev.cn:9080</serverUrl>
</vfsnamenode>
<configid>VFSStoreService</configid>
<VFSStoreService>
<cnname>实体文件存储</cnname>
<tokenType>user</tokenType>
<path>vfsstore_tempbean_config.xml</path>
<serverUrl>http://vfsstore.raddev.cn:9080</serverUrl>
</VFSStoreService>
<configid>orgservice</configid>
<orgservice>
<path>org_tempbean_config.xml</path>
<cnname>组织机构服务</cnname>
<tokenType>admin</tokenType>
<serverUrl>http://org.raddev.cn:9080</serverUrl>
</orgservice>
<configid>msgService</configid>
<msgService>
<path>msg_tempbean_config.xml</path>
<cnname>消息分发服务</cnname>
<tokenType>admin</tokenType>
<serverUrl>http://msg.raddev.cn:9080</serverUrl>
</msgService>
<configid>repeateventservice</configid>
<repeateventservice>
<cnname>集群事件注册</cnname>
<path>repeatmsg_config.xml</path>
</repeateventservice>
<configid>localservice</configid>
<localservice>
<cnname>本地注册服务</cnname>
<path>local_tempbean_config.xml</path>
</localservice>
<configid>iot</configid>
<iot>
<type>BEAN</type>
<cnname>总线内部方法</cnname>
<desc>总线内部方法</desc>
<serverUrl>http://iotserver.raddev.cn:9080</serverUrl>
<path>iot_tempbean_config.xml</path>
<expressionTemManager>
com.ds.esb.config.xml.ExpressionTempXmlProxy
</expressionTemManager>
</iot>
从配置文件中,我们可以获取两块配置,
(1)本地服务装载
前面的博文介绍过,onecode本身是一组基于Spring的扩展注解。装载onecode模型需要配置本地的检索路径方便检索装载。
//本地服务装载AR
<configid>esb</configid>
<esb>
<cnname>本地服务</cnname>
<path>/../lib/:^onecode.*\.jar;./lib/:^onecode.*\.jar;</path>
</esb>
//检索本地Class装载服务
<configid>local</configid>2
<local>
<templetname>检索本地Class</templetname>
<path>*com.ds</path>
</local>
(2)远程服务装载
<configid>bpmservice</configid>
<bpmservice>
<cnname>工作流服务</cnname>
<path>bpm_tempbean_config.xml</path>
<tokenType>user</tokenType>
<serverUrl>http://bpm.raddev.cn:9080</serverUrl>
</bpmservice>
复制代码
*篇幅关系具体的配置细节就不做累述了,如果您希望进一步了解配置细节或者具体实现可以下载 onecode-common-client 源码自行阅读,或在 GITEE 留言。
四,OneCode 集群版开放计划
OneCode 集群版设计的内容以及技术难度也会更大,但 OneCode 依然会采用开放开源的策略。预计,开放时间表
评论