# xworker **Repository Path**: 6z/xworker ## Basic Information - **Project Name**: xworker - **Description**: XWorker是动态模型的开发平台和应用平台 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-02-10 - **Last Updated**: 2022-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XWorker XWorker提供了一些动态模型的模型库,这些模型库一般是对各种Java类库或功能的封装,使用这些模型库的目的是为了实现快速编程。 ## 动态模型 ### 1.简介 动态模型是一种基于模型的面向对象的编程方法,其中模型可以用XML等来表示。 比如下面的XML就是一个模型程序,这个XML的每一个节点都是一个对象。可以点击这里运行模型, 运行后会打开一个窗口,窗口中有一个显示XWorker主页的浏览器。 ``` ``` 上面的模型是一个SWT应用,运行后截图如下。 ![SWT](https://images.gitee.com/uploads/images/2019/1217/164635_22cd7199_493262.png "SWT应用") ### 2.基本概念 动态模型的目的是为了实现能在系统运行时的实时编程,基本思想是使用模型来表示程序,通过实时解释模型来实现程序的执行。 动态模型使用模型来编程,基本概念如下。 - **结构:** 一个模型是由属性和子模型构成的,模型是树形结构的数据。 - **动作:** 动态模型认为任何模型都可以转化为动作,其中动作相当于方法和函数,是可以执行的。 - **行为:** 一个模型可以把某些子模型作为它的行为。 - **类:** 一个模型可以以任意模型作为自己的类,从而继承它的行为。 - **继承:** 一个模型可以继承其它任意模型,从而继承它们的行为。 以上就是动态模型的基本概念了,简单来说,动态模型是一个把类和行为都当作对象,而对象是结构化的数据的面向对象的编程方法。 动态模型的基本概念是相对比较抽象的,要实现使用动态模型编程,需要实现模型转化为动作并可以执行的方法,实现的原理如下。 1. 任何模型都可以转化为动作,作为动作执行时是执行这个模型对象的名字为run的行为。 2. 对象的行为也是模型,因此一个对象名字为run的行为也是模型,要执行名字为run的行为,那么回到步骤1。 3. 以上是一个迭代的过程,要想迭代能够终止,那么有一些模型执行时应该有元系统来解释执行。 其中元系统是指实现动态模型的系统,比如XWorker使用的动态模型引擎是Java编写的,Java就是它的元系统。 ### 3.特点 - **实时编程** 使用动态模型可以实现实时编程,即可以在系统运行时编程。之所以可以实现实时编程,是因为模型是数据,可以随时创建和修改,并且模型是通过解释执行的。 比如在下面的示例视频中,模型是直接在编辑器中运行的,不需要启动新的进程,编写的模型和模型编辑器同属一个应用。 - **为自己编写工具** 模型是结构化的数据,因此可以编写各种各样的工具来帮助编写模型,而由于可以在运行时编程,因此可以在系统运行时为系统自身编写工具。 - **积累和迭代** 可以把各种技术和功能包装成模型,模型是数据可以把它们整合在一起,并总是可以使用已有的模型编写新的模型。 - **快速编程** 通过以上特点可以实现快速编程。 ### 4.如何使用动态模型 #### 4.1.使用场合 作为一种编程方法,动态模型可以在Java项目中使用,也可以直接使用模型编程。 #### 4.2.模型库 XWorker所使用的动态模型引擎X-Meta是使用Java开发,模型库也是通过Jar的形式发布的,一般在Java项目中引入相关的类库就可以使用动态模型了。 XWorker的模型库是发布到Maven上的,可以在[Maven里](https://mvnrepository.com/search?q=xworker)查看已发布的类库。 #### 4.3.如何编辑和运行模型 模型虽然可以用XML来表示,但手工编辑模型难度可能会比较大,所以一般使用模型编辑器来编辑模型。 XWorker提供了模型编辑器,可以在模型编辑器里编辑模型。由于动态模型一般是实时动态编程,所以模型编辑器一般也是你的程序的一部分,可以一边运行程序一般编辑模型。 #### 4.4.如何发布模型程序 同Java程序的打包和发布,模型可以打包到Jar中,动态模型的应用也是Java应用。 #### 4.5.文档和示例 文档可以参看[XWorker主页](https://www.xworker.org)或[Wiki](https://gitee.com/xworker/xworker/wikis/pages)。应用示例可以参看[apps](https://gitee.com/xworker/apps)。具体模型和文档的示例一般在模型编辑器中可以找到。 ## 加入我们 XWorker是一个基于Apache2.0开源协议的平台,XWorker期待你的参与,请加入我们一起来完善它,QQ群:**312989786**。