事物和动态系统

1. 为什么说XWorker是动态系统?

    我们说现实客观世界是一个动态系统,是因为客观世界是由各种事物组成的,并且这些事物一直处于不断变化的状态中,这样客观世界就是动态的。

    XWorker也采用了类似的观点,即XWorker是由各种事物组成的,并且这些事物可以随时改变,因此XWorker的功能也是不断变化的,所以它是一个动态系统。

2. 事物的基本概念

2.1 事物是用于表示各种东西的数据

    XWorker是使用Java编写的一个计算机软件系统,而计算机只能处理数据,所以我们是用数据来表示各种东西,因此XWorker中的事物就是用来表示各种东西的数据。

2.2 事物的结构

    XWorker中的事物是结构化的数据,一个事物是由属性和子节点构成的,因此它是像XML或JSON这样的树形结构的数据。

3. 事物的示例

    由于任何东西东西在XWorker中都是用事物表示的,所以任何东西都是像XML这样的数据。

3.1 一个模型

    比如一个表示人的事物模型。

<Person name="Zhangsan" _descriptors="xworker.example.otandoo.example.Person" age="40" label="Zhangsan">
    <Child name="XiaoMing" age="10"></Child>
</Person>

3.2 一个动作

    动作是类似于代码和函数这样可以执行的程序,它也可以用事物表示。比如下面是XWorker的一个发布更新的动作。

<Begin name="run" descriptors="xworker.lang.actions.Actions/@ActionGroup">
    <actions>
        <GroovyAction name="init">
            <code><![CDATA[.....]]></code>
        </GroovyAction>
        <NewFileCopyer name="copyNewFile" descriptors="xworker.io.util.NewFileCopyer" srcPath="var:srcDir" 
              tagPath="var:targetDir" background="false" excludeRegex=".*xworker\\asserts.*|....." 
               datePattern="yyyyMMddHHmmss" date="var:date"></NewFileCopyer>
        <If condition="targetDirFile.listFiles().length &gt; 0">
            <Then name="ChildAction">
                <ZipCompress name="zipCompress" descriptors="xworker.java.util.ZipCompress" 
                   sourceFile="var:targetDir" targetZipFile="var:targetZip" includeRootDir="false"></ZipCompress>
                <HttpPost descriptors="xworker.httpclient.HttpPost" httpclient="_local.xworker.config.XWorkerHttpClient" 
                          uri="......">
                    <entity>
                        <MultipartEntity>
                            <FileBody name="file"  file="var:targetZip"></FileBody>
                            <StringBody name="userName" text="var:userName"></StringBody>
                            <StringBody name="password" text="var:password"></StringBody>
                            <StringBody name="version" text="var:version"></StringBody>
                        </MultipartEntity>
                    </entity>
                </HttpPost>
                <GroovyAction name="finish">
                    <code><![CDATA[//成功,保存最后版本号
def diffInfo = world.getThing("xworker.tools.DeployDiffInfo");
diffInfo.put("lastVersion", currentDate);
diffInfo.save();]]></code>
                </GroovyAction>
            </Then>
        </If>
    </actions>
</Begin>

3.3 一个SWT窗口

    以下代码是一个SWT窗口的事物代码。

<Shell name="HelloWorld" descriptors="xworker.swt.widgets.Shell" text="Hello World" 
               RESIZE="true" width="800" height="600" label="HelloWorld">
    <FillLayout></FillLayout>
    <Browser url="http://www.baidu.com" WEBKIT="true"></Browser>
</Shell>

    这段代码可以运行,运行后的窗口截图如下。

SWT示例

3.4 其它示例

    作为一个动态系统,XWorker的全部内容几乎都是有事物提供的,因此XWorker本身就是事物的例子,当然还包含WEB编程、人工智能编程等其它例子,可以在XWorker的更多教程和使用中看到。

 

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号