^1640682295900
@
sname
Demo
slabel
Demo
sdescriptors
xworker.demo.introduce.scripts.DemoScript
sth_createIndex
false
sth_registMyChilds
false
sth_mark
false
  @/@introduce
  sname
  introduce
  sdescriptors
  xworker.demo.introduce.scripts.DemoScript/@DemoScript
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  introduce
    @/@introduce/@helloWorld
    sname
    helloWorld
    sdelay
    5000
    smessage
    欢迎来到XWorker，XWorker是一个以模型为主的编程平台，也是一个应用平台
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    helloWorld
    @/@introduce/@helloWorld1
    sname
    helloWorld1
    sdelay
    3000
    smessage
    下面我们将向你展示XWorker的特点和编程方法
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    helloWorld1
    @/@introduce/@CloseMessage
    sname
    CloseMessage
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@CloseMessage1
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    CloseMessage
  @/@modelProgram
  sname
  modelProgram
  sdescriptors
  xworker.demo.introduce.scripts.DemoScript/@DemoScript
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  modelProgram
    @/@modelProgram/@whatsModel
    sname
    whatsModel
    sdelay
    3000
    smessage
    特点1：XWorker是以模型为主的编程方法
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    whatsModel
    @/@modelProgram/@whastsModel1
    sname
    whastsModel1
    sdelay
    5000
    smessage
    XWorker认为任何事物都可以用模型表示，所以模型也称作事物模型。
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    whastsModel1
    @/@modelProgram/@whastsModel2
    sname
    whastsModel2
    sdelay
    5000
    smessage
    而模型是像XML或JSON这样的树形结构的数据，其实广义来说任何数据都是模型
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    whastsModel2
    @/@modelProgram/@swtModel
    sname
    swtModel
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    swtModel
      @/@modelProgram/@swtModel/@shellXml
      sname
      shellIntroduce
      sdelay
      3000
      smessage
      比如下面的SWT窗口程序
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      shellXml
      @/@modelProgram/@swtModel/@shellXML
      sname
      shellXML1
      sdelay
      3000
      smessage
      我们可以打开这个模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      shellXML
      @/@modelProgram/@swtModel/@shellXml1
      sname
      shellXml
      sthingPath
      xworker.example.swt.shell.HelloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      shellXml1
      @/@modelProgram/@swtModel/@shellXMLIntroduce
      sname
      shellXMLIntroduce
      sdelay
      5000
      smessage
      这是SWT窗口的模型XML代码
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      shellXMLIntroduce
      @/@modelProgram/@swtModel/@runShellMessage
      sname
      runShellMessage
      sdelay
      3000
      smessage
      该模型也可以运行
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      runShellMessage
      @/@modelProgram/@swtModel/@CloseThingXml
      sname
      CloseThingXml
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseThingXml
      @/@modelProgram/@swtModel/@OpenShell
      sname
      OpenShell
      sactionContextName
      shellExampleContext
      sshellPath
      xworker.example.swt.shell.HelloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      OpenShell
      @/@modelProgram/@swtModel/@runResult
      sname
      runResult
      sdelay
      5000
      smessage
      这个模型运行后是一个浏览器窗口，默认打开百度搜索
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      runResult
      @/@modelProgram/@swtModel/@CloseShell
      sname
      CloseShell
      sactionContextName
      shellExampleContext
      sshellName
      HelloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseShell
    @/@modelProgram/@webModel
    sname
    webModel
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    webModel
      @/@modelProgram/@webModel/@webModel
      sname
      webModel
      sdelay
      3000
      smessage
      使用模型也可以编写WEB应用
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      webModel
      @/@modelProgram/@webModel/@openWebModel
      sname
      openWebModel
      sdelay
      3000
      smessage
      我们可以打开一个WEB的演示模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openWebModel
      @/@modelProgram/@webModel/@ShowThingXml
      sname
      ShowThingXml
      sthingPath
      xworker.example.ui.html.WebExamples/@helloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ShowThingXml
      @/@modelProgram/@webModel/@webHelloWord
      sname
      webHelloWord
      sdelay
      5000
      smessage
      这是一个简单的HelloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      webHelloWord
      @/@modelProgram/@webModel/@runWebHelloWorld
      sname
      runWebHelloWorld
      sdelay
      4000
      smessage
      我们也可以运行它
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      runWebHelloWorld
      @/@modelProgram/@webModel/@CloseThingXml
      sname
      CloseThingXml
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseThingXml
      @/@modelProgram/@webModel/@ShowBrowser
      sname
      ShowBrowser
      surl
      http://localhost:9001/do?sc=xworker.example.ui.html.WebExamples/@helloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowBrowser
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ShowBrowser
      @/@modelProgram/@webModel/@helloWeb
      sname
      helloWeb
      sdelay
      5000
      smessage
      运行后可以看到它是一个简单的WEB网页
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      helloWeb
      @/@modelProgram/@webModel/@CloseBrowser
      sname
      CloseBrowser
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseBrowser
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseBrowser
    @/@modelProgram/@demoIsModel
    sname
    demoIsModel
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    demoIsModel
      @/@modelProgram/@demoIsModel/@demoIsModel
      sname
      demoIsModel
      sdelay
      3000
      smessage
      理论上来说任何东西都可以用事物模型表示
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demoIsModel
      @/@modelProgram/@demoIsModel/@demoIsModel1
      sname
      demoIsModel1
      sdelay
      5000
      smessage
      比如当前的演示程序也是使用事物模型编写的
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demoIsModel1
      @/@modelProgram/@demoIsModel/@opneThingXml
      sname
      opneThingXml
      sdelay
      3000
      smessage
      我们同样可以打开它的模型XML
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      opneThingXml
      @/@modelProgram/@demoIsModel/@ShowThingXml
      sname
      ShowThingXml
      sthingPath
      xworker.demo.introduce.Demo
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ShowThingXml
      @/@modelProgram/@demoIsModel/@thingXml
      sname
      thingXml
      sdelay
      5000
      smessage
      可以看到当前演示的有关信息
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      thingXml
      @/@modelProgram/@demoIsModel/@CloseThingXml
      sname
      CloseThingXml
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseThingXml
  @/@dynamic
  sname
  dynamic
  sdescriptors
  xworker.demo.introduce.scripts.DemoScript/@DemoScript
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  dynamic
    @/@dynamic/@modelIsDynamic
    sname
    modelIsDynamic
    sdelay
    3000
    smessage
    特点2：事物模型编程方法是动态的
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelIsDynamic
    @/@dynamic/@modelIsDynamic1
    sname
    modelIsDynamic1
    sdelay
    8000
    smessage
    事物模型本身只是数据，数据本身不能运行，是要经过解释才能表现为程序，从而实现了动态的效果
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelIsDynamic1
    @/@dynamic/@modelIsDynamic2
    sname
    modelIsDynamic2
    sdelay
    5000
    smessage
    比如前面的SWT窗口和WEB HelloWorld的示例，都是经过解释才成为程序的
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelIsDynamic2
    @/@dynamic/@modelIsDynamic3
    sname
    modelIsDynamic3
    sdelay
    3000
    smessage
    下面我们用动作模型来演示一下动态性
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelIsDynamic3
    @/@dynamic/@moveAndResize
    sname
    moveAndResize
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    moveAndResize
      @/@dynamic/@moveAndResize/@modeResizeDesc
      sname
      modeResizeDesc
      sdelay
      3000
      smessage
      这里用动作模型演示一下窗口的缩放和移动
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      modeResizeDesc
      @/@dynamic/@moveAndResize/@beforeRun
      sname
      beforeRun
      sdelay
      6000
      smessage
      下面我们将运行这个动作演示，会打开一个XML窗口，窗口里显示的XML正式当前被执行的动作模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      beforeRun
      @/@dynamic/@moveAndResize/@MoveShell
      sname
      MoveShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell
      @/@dynamic/@moveAndResize/@ResizeShell
      sname
      ResizeShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell
      @/@dynamic/@moveAndResize/@MoveShell1
      sname
      MoveShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell1
      @/@dynamic/@moveAndResize/@ResizeShell1
      sname
      ResizeShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell1
      @/@dynamic/@moveAndResize/@MoveShell2
      sname
      MoveShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell2
      @/@dynamic/@moveAndResize/@ResizeShell2
      sname
      ResizeShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell2
      @/@dynamic/@moveAndResize/@MoveShell3
      sname
      MoveShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell3
      @/@dynamic/@moveAndResize/@ResizeShell3
      sname
      ResizeShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell3
      @/@dynamic/@moveAndResize/@MoveShell4
      sname
      MoveShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell4
      @/@dynamic/@moveAndResize/@ResizeShell4
      sname
      ResizeShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell4
      @/@dynamic/@moveAndResize/@MoveShell5
      sname
      MoveShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell5
      @/@dynamic/@moveAndResize/@ResizeShell5
      sname
      ResizeShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell5
      @/@dynamic/@moveAndResize/@MoveShell6
      sname
      MoveShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell6
      @/@dynamic/@moveAndResize/@ResizeShell6
      sname
      ResizeShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell6
      @/@dynamic/@moveAndResize/@MoveShell7
      sname
      MoveShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell7
      @/@dynamic/@moveAndResize/@ResizeShell7
      sname
      ResizeShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell7
      @/@dynamic/@moveAndResize/@MoveShell8
      sname
      MoveShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell8
      @/@dynamic/@moveAndResize/@ResizeShell8
      sname
      ResizeShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell8
      @/@dynamic/@moveAndResize/@MoveShell9
      sname
      MoveShell
      sdelay
      0
      sx
      -100
      sy
      -100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@MoveShell
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      MoveShell9
      @/@dynamic/@moveAndResize/@ResizeShell9
      sname
      ResizeShell
      sdelay
      0
      sx
      100
      sy
      100
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ResizeShell1
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ResizeShell9
      @/@dynamic/@moveAndResize/@ShowMessage
      sname
      ShowMessage
      sdelay
      5000
      smessage
      在这里MoveShell和ResizeShell的动作模型是实时解释执行的
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ShowMessage
      @/@dynamic/@moveAndResize/@dynamic
      sname
      dynamic
      sdelay
      5000
      smessage
      希望从这个动作模型的演示里可以体会到事物模型的动态性
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      dynamic
      @/@dynamic/@moveAndResize/@CloseThingXml
      sname
      CloseThingXml
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@CloseThingXml
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      CloseThingXml
  @/@modeProgram
  sname
  modeProgram
  sdescriptors
  xworker.demo.introduce.scripts.DemoScript/@DemoScript
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  modeProgram
    @/@modeProgram/@modelProgram1
    sname
    modelProgram1
    sdelay
    3000
    smessage
    编程方法1：如何编写事物模型
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelProgram1
    @/@modeProgram/@modelProgram2
    sname
    modelProgram2
    sdelay
    5000
    smessage
    XWorker的编程方法主要有两个方面：a.如何编写模型，b.如何解释一个模型
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    modelProgram2
    @/@modeProgram/@EditProgram
    sname
    EditProgram
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    EditProgram
      @/@modeProgram/@EditProgram/@editProgram1
      sname
      editProgram1
      sdelay
      3000
      smessage
      a.如何编写模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      editProgram1
      @/@modeProgram/@EditProgram/@descriptor
      sname
      descriptor
      sdelay
      3000
      smessage
      在XWorker里一个模型总是通过另一个模型编辑出来的
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      descriptor
      @/@modeProgram/@EditProgram/@descriptor1
      sname
      descriptor1
      sdelay
      3000
      smessage
      而用于编辑其他模型的模型称为描述者
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      descriptor1
      @/@modeProgram/@EditProgram/@demo1
      sname
      demo1
      sdelay
      3000
      smessage
      我们以当前演示模型为例
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demo1
      @/@modeProgram/@EditProgram/@demo11
      sname
      demo1
      sdelay
      3000
      smessage
      我们首先打开演示的模型定义DemoScript
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demo11
      @/@modeProgram/@EditProgram/@OpenThing
      sname
      OpenThing
      sthingPath
      xworker.demo.introduce.scripts.DemoScript
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      OpenThing
      @/@modeProgram/@EditProgram/@metaDescriptor
      sname
      metaDescriptor
      sdelay
      5000
      smessage
      在这个DemoScript的编辑表单里，可以看到描述者是xworker.lang.MetaDescriptor3
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      metaDescriptor
      @/@modeProgram/@EditProgram/@metaDescriptor1
      sname
      metaDescriptor1
      sdelay
      3000
      smessage
      MeatDescrptor3是元描述，也可以认为是元结构或元事物
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      metaDescriptor1
      @/@modeProgram/@EditProgram/@metaDescriptor2
      sname
      metaDescriptor2
      sdelay
      3000
      smessage
      元事物（元结构）的作用就是定义一个事物模型的结构
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      metaDescriptor2
      @/@modeProgram/@EditProgram/@metaDescriptor3
      sname
      metaDescriptor3
      sdelay
      3000
      smessage
      实际上就是使用元事物（元结构）来定义一个事物应该具有哪些属性和子事物
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      metaDescriptor3
      @/@modeProgram/@EditProgram/@nameLabelDescriptor
      sname
      nameLabelDescriptor
      sdelay
      3000
      smessage
      比如DemoScript具有name、label和descrption三个属性
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      nameLabelDescriptor
      @/@modeProgram/@EditProgram/@viewAttribute
      sname
      viewAttribute
      sdelay
      3000
      smessage
      我们可以从界面上查看一下这几个属性
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      viewAttribute
      @/@modeProgram/@EditProgram/@openName
      sname
      openName
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@name
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openName
      @/@modeProgram/@EditProgram/@openLabel
      sname
      openLabel
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@label
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openLabel
      @/@modeProgram/@EditProgram/@openDescription
      sname
      openDescription
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@description
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openDescription
      @/@modeProgram/@EditProgram/@childThing
      sname
      childThing
      sdelay
      5000
      smessage
      DemoScript也有SHowMessage、CloseMessage、End、DemoScript（子演示）、ShowThingXml......等子事物
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      childThing
      @/@modeProgram/@EditProgram/@viewChild
      sname
      viewChild
      sdelay
      3000
      smessage
      同样可以在界面上查看一下子事物的定义
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      viewChild
      @/@modeProgram/@EditProgram/@openShowMesasge
      sname
      openShowMesasge
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openShowMesasge
      @/@modeProgram/@EditProgram/@openCloseMessage
      sname
      openCloseMessage
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@CloseMessage1
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openCloseMessage
      @/@modeProgram/@EditProgram/@openEnd
      sname
      openEnd
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@End
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openEnd
      @/@modeProgram/@EditProgram/@otherChildThing
      sname
      otherChildThing
      sdelay
      3000
      smessage
      其它子事物我们就不一一查看了
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      otherChildThing
      @/@modeProgram/@EditProgram/@childThingAttribute
      sname
      childThingAttribute
      sdelay
      3000
      smessage
      每个子事物（子节点）也有各自的属性和子事物
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      childThingAttribute
      @/@modeProgram/@EditProgram/@showMessage
      sname
      showMessage
      sdelay
      3000
      smessage
      比如ShowMessage子事物含有name、label、delay和message等子事物
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      showMessage
      @/@modeProgram/@EditProgram/@openShowMessageName
      sname
      openShowMessageName
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@name
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openShowMessageName
      @/@modeProgram/@EditProgram/@openShowMessageLabel
      sname
      openShowMessageLabel
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@label
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openShowMessageLabel
      @/@modeProgram/@EditProgram/@openShowMessageDelay
      sname
      openShowMessageDelay
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@delay
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openShowMessageDelay
      @/@modeProgram/@EditProgram/@openShowMessageMessage
      sname
      openShowMessageMessage
      sdelay
      1000
      sthingPath
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@message
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openShowMessageMessage
      @/@modeProgram/@EditProgram/@demoScript
      sname
      demoScript
      sdelay
      5000
      smessage
      我们知道了DemoScript模型是通过MetaDescriptor3定义的，那么DemoScript的作用是什么呢？
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demoScript
      @/@modeProgram/@EditProgram/@editDemo
      sname
      editDemo
      sdelay
      3000
      smessage
      实际上使用它可以编写演示程序
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      editDemo
      @/@modeProgram/@EditProgram/@openDemo1
      sname
      openDemo1
      sdelay
      3000
      smessage
      我们可以打开当前正在运行的演示模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openDemo1
      @/@modeProgram/@EditProgram/@openDemo
      sname
      openDemo
      sthingPath
      xworker.demo.introduce.Demo
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openDemo
      @/@modeProgram/@EditProgram/@script
      sname
      script
      sdelay
      5000
      smessage
      你会发现DemoScript是Demo模型的结构，DemoScript定义了Demo有哪些属性和子节点
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      script
      @/@modeProgram/@EditProgram/@viewForm
      sname
      viewForm
      sdelay
      3000
      smessage
      在Demo的编辑表单里可以看到这些属性是DemoScript模型定义的
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      viewForm
      @/@modeProgram/@EditProgram/@childeDefine
      sname
      childeDefine
      sdelay
      3000
      smessage
      也可以看到DemoScript所定义的子节点，比如ShowMessage节点
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      childeDefine
      @/@modeProgram/@EditProgram/@openHelloWord
      sname
      openHelloWord
      sthingPath
      xworker.demo.introduce.Demo/@introduce/@helloWorld
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@OpenThing
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      openHelloWord
      @/@modeProgram/@EditProgram/@showMessage1
      sname
      showMessage1
      sdelay
      5000
      smessage
      这是演示里显示的第一句话，可以看到它的属性是由DemoScript的ShowMessage子节点定义的
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      showMessage1
      @/@modeProgram/@EditProgram/@editModelEdn
      sname
      editModelEdn
      sdelay
      7000
      smessage
      以上就是编辑模型的规则，使用一个模型去编写另一个模型，一般来说使用一个MetaDescriptor3定义模型的结构，然后用模型的结构编辑最终的模型
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      editModelEdn
    @/@modeProgram/@ExplanModel
    sname
    ExplanModel
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@DemoScript
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    ExplanModel
      @/@modeProgram/@ExplanModel/@action1
      sname
      action1
      sdelay
      3000
      smessage
      b.解释模型的方法
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      action1
      @/@modeProgram/@ExplanModel/@action2
      sname
      action2
      sdelay
      5000
      smessage
      模型是数据，既然XWorker也是一个编程方法，那么模型最终需要转化为程序来执行
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      action2
      @/@modeProgram/@ExplanModel/@action21
      sname
      action3
      sdelay
      3000
      smessage
      那么把模型转化为程序的方法是什么呢？其实原理很简单
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      action21
      @/@modeProgram/@ExplanModel/@action4
      sname
      action4
      sdelay
      3000
      smessage
      首先我们假设任何一个模型都可以转化为程序
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      action4
      @/@modeProgram/@ExplanModel/@ation5
      sname
      action5
      sdelay
      5000
      smessage
      那么我们就可以定义模型的行为，认为一个模型的某些子节点是它的行为
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@ShowMessage
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      ation5
      @/@modeProgram/@ExplanModel/@demoScript
      sname
      demoAction
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@DemoScript
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      demoScript
        @/@modeProgram/@ExplanModel/@demoScript/@openDmeoRun
        sname
        openDmeoRun
        sdelay
        3000
        smessage
        在这里我们可以打开演示模型的行为定义
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openDmeoRun
        @/@modeProgram/@ExplanModel/@demoScript/@openDemoRun
        sname
        openDemoRun
        sthingPath
        xworker.demo.introduce.scripts.DemoScript/@actions
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openDemoRun
        @/@modeProgram/@ExplanModel/@demoScript/@demoAction
        sname
        demoAction
        sdelay
        3000
        smessage
        可以看到在当前的演示模型里actions子节点是行为定义的节点，它下面的子节点是具体的行为
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        demoAction
        @/@modeProgram/@ExplanModel/@demoScript/@openDemoRunAction
        sname
        openDemoRunAction
        sdelay
        3000
        smessage
        我们可以打开它的run方法的定义
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openDemoRunAction
        @/@modeProgram/@ExplanModel/@demoScript/@openDemoRun1
        sname
        openDemoRun
        sthingPath
        xworker.demo.introduce.scripts.DemoScript/@actions/@GroovyAction
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openDemoRun1
        @/@modeProgram/@ExplanModel/@demoScript/@demoRun
        sname
        demoRun
        sdelay
        3000
        smessage
        可以看到这是演示模型的run行为的定义也是一个模型
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        demoRun
        @/@modeProgram/@ExplanModel/@demoScript/@demoRun1
        sname
        demoRun1
        sdelay
        3000
        smessage
        这个模型实际上一个Groovy脚本模型，可以用来编写Groovy脚本代码
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        demoRun1
        @/@modeProgram/@ExplanModel/@demoScript/@demoRun2
        sname
        demoRun2
        sdelay
        3000
        smessage
        而Groovy脚本代码编写了如何解释执行示例的方法
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        demoRun2
        @/@modeProgram/@ExplanModel/@demoScript/@demoRun3
        sname
        demoRun3
        sdelay
        3000
        smessage
        但是Groovy脚本模型本身还是一个模型，它本身还是数据，也需要有方法来解释执行它
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        demoRun3
        @/@modeProgram/@ExplanModel/@demoScript/@openGroovyAciton
        sname
        openGroovyAciton
        sdelay
        3000
        smessage
        Groovy动作模型是如何运行的，我们可以打开它查看
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openGroovyAciton
        @/@modeProgram/@ExplanModel/@demoScript/@openGroovyAction
        sname
        openGroovyAction
        sthingPath
        xworker.groovy.GroovyAction
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        openGroovyAction
        @/@modeProgram/@ExplanModel/@demoScript/@groovyAction
        sname
        groovyAction
        sdelay
        3000
        smessage
        我们还可以打开查看它的行为定义
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        groovyAction
        @/@modeProgram/@ExplanModel/@demoScript/@groovyRun
        sname
        groovyRun
        sthingPath
        xworker.groovy.GroovyAction/@actions/@run
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        groovyRun
        @/@modeProgram/@ExplanModel/@demoScript/@groovyRun1
        sname
        groovyRun1
        sdelay
        5000
        smessage
        可以看到它也有一个run行为，Groovy脚本模型运行时执行的就是这个run行为
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        groovyRun1
        @/@modeProgram/@ExplanModel/@demoScript/@groovyRun2
        sname
        groovyRun2
        sdelay
        3000
        smessage
        而Groovy脚本模型的run行为是通过JavaAction模型定义的
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        groovyRun2
        @/@modeProgram/@ExplanModel/@demoScript/@groovyRun3
        sname
        groovyRun3
        sdelay
        8000
        smessage
        其中JavaAction是使用Java直接解释执行的，因为一些模型最终是要由实现了事物模型的元系统执行的，而XWorker是使用Java实现的
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        groovyRun3
      @/@modeProgram/@ExplanModel/@moreAction
      sname
      moreAction
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@DemoScript
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      moreAction
        @/@modeProgram/@ExplanModel/@moreAction/@moreAction
        sname
        moreAction
        sdelay
        3000
        smessage
        通过以上定义模型行为的方法可以定义任意一个模型的行为
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        moreAction
        @/@modeProgram/@ExplanModel/@moreAction/@showoMessageRun
        sname
        showoMessageRun
        sdelay
        3000
        smessage
        我们可以查看一下ShowMessage的行为定义
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showoMessageRun
        @/@modeProgram/@ExplanModel/@moreAction/@showMessageRun
        sname
        showMessageRun
        sthingPath
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@actions/@run2
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessageRun
        @/@modeProgram/@ExplanModel/@moreAction/@showMessage
        sname
        showMessage
        sdelay
        3000
        smessage
        可以看到ShowMessage的run行为是一个复合行为
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessage
        @/@modeProgram/@ExplanModel/@moreAction/@showMessage1
        sname
        showMessage1
        sdelay
        3000
        smessage
        它用到了SWT的同步执行模型和Groovy脚本模型等
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessage1
        @/@modeProgram/@ExplanModel/@moreAction/@showMessage1_5
        sname
        showMessage1.5
        sdelay
        3000
        smessage
        我们也可以查看一下这两个模型
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessage1_5
        @/@modeProgram/@ExplanModel/@moreAction/@showMessage2
        sname
        showMessage2
        sdelay
        1000
        sthingPath
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@actions/@run2/@actions/@run1
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessage2
        @/@modeProgram/@ExplanModel/@moreAction/@showMessage3
        sname
        showMessage3
        sdelay
        1000
        sthingPath
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage/@actions/@run2/@actions/@run1/@actions/@run
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@OpenThing
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        showMessage3
      @/@modeProgram/@ExplanModel/@actionSummary
      sname
      actionSummary
      sdescriptors
      xworker.demo.introduce.scripts.DemoScript/@DemoScript
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_mark
      false
      sid
      actionSummary
        @/@modeProgram/@ExplanModel/@actionSummary/@action1
        sname
        action1
        sdelay
        5000
        smessage
        以上就是如何定义模型行为的方法，实际上也就是如何解释模型的方法
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action1
        @/@modeProgram/@ExplanModel/@actionSummary/@action2
        sname
        action2
        sdelay
        3000
        smessage
        可以看到模型最终是要通过程序来解释执行的
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action2
        @/@modeProgram/@ExplanModel/@actionSummary/@action21
        sname
        action3
        sdelay
        3000
        smessage
        但是也可以发现一些不同的地方
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action21
        @/@modeProgram/@ExplanModel/@actionSummary/@action4
        sname
        action4
        sdelay
        5000
        smessage
        传统的编程是把编写一段程序去处理数据，此时程序是主体
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action4
        @/@modeProgram/@ExplanModel/@actionSummary/@action5
        sname
        action5
        sdelay
        5000
        smessage
        而在XWorker里是把程序集成到模型里，这时数据是主体
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action5
        @/@modeProgram/@ExplanModel/@actionSummary/@action6
        sname
        action6
        sdelay
        5000
        smessage
        这个变化虽然很小，但在编程的思维方式、方法和效果上却有很大的不同
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action6
        @/@modeProgram/@ExplanModel/@actionSummary/@action7
        sname
        action7
        sdelay
        3000
        smessage
        也正是因为把代码嵌入到了模型（数据）里
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action7
        @/@modeProgram/@ExplanModel/@actionSummary/@action8
        sname
        action8
        sdelay
        5000
        smessage
        事物模型的编程方法才成为了一个动态的和具有成长性的编程方法
        sdescriptors
        xworker.demo.introduce.scripts.DemoScript/@ShowMessage
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_mark
        false
        sid
        action8
  @/@finally
  sname
  finally
  sdescriptors
  xworker.demo.introduce.scripts.DemoScript/@DemoScript
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  finally
    @/@finally/@summary1
    sname
    summary1
    sdelay
    3000
    smessage
    通过事物模型的方法可以把各种东西模型化
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    summary1
    @/@finally/@example
    sname
    example
    sdelay
    5000
    smessage
    比如SWT窗口、WEB编程、网络编程、游戏、人工智能算法等等
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    example
    @/@finally/@good
    sname
    good
    sdelay
    5000
    smessage
    而且一旦模型化，那么就可以动态的调用它们
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    good
    @/@finally/@good1
    sname
    good1
    sdelay
    6000
    smessage
    甚至可以通过动态生成模型的方法实现更加动态和强大的功能
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    good1
    @/@finally/@openSource
    sname
    openSource
    sdelay
    3000
    smessage
    XWorker是一个免费开源的系统
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    openSource
    @/@finally/@openSource1
    sname
    openSource1
    sdelay
    3000
    smessage
    我们希望你能喜欢并使用它
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    openSource1
    @/@finally/@openSource2
    sname
    openSource2
    sdelay
    3000
    smessage
    也希望你能编写和共享更多模型
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    openSource2
    @/@finally/@thands
    sname
    thands
    sdelay
    5000
    smessage
    谢谢
    sdescriptors
    xworker.demo.introduce.scripts.DemoScript/@ShowMessage
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    thands
