前言
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 依然会采用开放开源的策略。预计,开放时间表
评论