xworker.swt.dnd.DropTarget/@DropTargetListener/@actions1
事物 动作(actions)点击打开事物点击浏览描述

父事物:
DropTargetListener
描述者:
子事物
thing
继承:
Actions

如果是自定义的DragSourceEffect,那么可根据需要编写以下动作:

void dragEnter(DropTargetEvent event)
          This implementation of dragEnter permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void dragLeave(DropTargetEvent event)
          This implementation of dragLeave does nothing.
 void dragOperationChanged(DropTargetEvent event)
          This implementation of dragOperationChanged permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void dragOver(DropTargetEvent event)
          This implementation of dragOver permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void drop(DropTargetEvent event)
          This implementation of drop does nothing.
 void dropAccept(DropTargetEvent event)
          This implementation of dropAccept permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.

字段摘要
           String description
           
           String name
           
 
方法摘要
 
子事物摘要
           Aggregate
          对一个List或者数组进行聚合操作。
           Begin
          执行一组动作。
           Break
          参看:
           CodeGenerator
          代码生成器,主要功能是生成、替换或者修改目标文件,一次执行只处理一个文件。
           Continue
          参看:
           Do
          相当于
           For
          for(self.doAction("init", actionContext);self.doAction('condition", actionCotnext"); self.doAction("control", actionContext")){
           FunctionAction
          在普通动作中使用函数式编程中的函数。
           GetAttributeSelf
          获取self事物的指定属性值,尤其是属性值是字符串时的一些约定。另外这里的self指的是把本动作作为行为的事物。
           GetThingFromSelf
          从一个事物的属性或子事物定义的事物,优先从属性中获取事物,其次从子事物中获取,返回值为获取的事物。
           GetValueByThingAttribute
          返回指定事物的某个属性的值或以该属性值为变量名从ActionContext中使用Ognl取值。
           GetVariableOgnl
          使用Ognl表达式获取变量。
           GetVariableSelf
          用于其他事物的取值,即其他事物调用此方法根据其他事物的属性取值,而其他事物在下面的变量名为parentSelf,本动作事物为self。
           GrabDataFromText
          
           GroovyAction
          使用Groovy脚本定义的动作。
           Group
          用于把一个List按照指定的字段分组,分组后的List是List<Map<String, Object>>的结构,其中Map中的_data为分组后的List数据,分组的字段名请不要使用_data。
           If
          IF的结构大概如下
           Iterator
          每次遍历会有<varName>,<varName>_index,<varName>_hasNext三个临时变量。
           JavaAction
          系统最基础的动作定义,元系统从底层只支持JavaAction,其他类型的动作比如JdkScript都是见解利用此动作而实现的。
           JdkScript
          JdkScript
           Log
          把一个变量打印到日志中。
           LogTemplate
          使用Freemarker打印日志。
           LuaAction
          Lua脚本的动作。
           MethodCall
          方法调用。
           NOOP
          没有任何操作的动作,一般用于只定义一个动作。
           ObjectFactory
          Java对象的构造工厂。
           ObjectPropertiesSetter
          
           Ongl
          Ognl表达式,可以有自己的参数。
           ParamsToObject
          一个有x1=v1&x2=v2&....&xn=vn参数转化为对象设置的属性。
           Print
          不换行的打印变量到控制台。
           PrintTemplate
          不换行的使用模板生成字符串并打印到控制台。
           Println
          换行的打印变量到控制台。
           PrintlnTemplate
          换行的使用模板生成字符串并打印到控制台。
           PropertyChild
          设置属性值,只能是事物的执行动作,因为需要取事物的子事物。
           PropertyGetter
          用于取值,使用Ognl表达式。
           PropertySetter
          设置属性值。
           RefAction
          引用并执行其他动作。
           Return
          return控制语句,返回常量、变量或者表达式变量,只能返回其中一个,优先返回变量。
           ReturnFirstNotNull
          执行一组动作,如果有一个动作的返回值不为null,那么就立刻返回,其他类似Begin。
           SecurityHandler
          安全处理器,运行后将注册到SecurityManager上。
           Sort
          对一个List进行排序。
           Switch
          swtich和Java的switch有很大不同,它相当于:
           Task
          任务是在其他线程里执行,一般是定时任务或要在其他线程里的动作。
           Thing
          由于任何事物都可以转换为动作(Action),所以普通事物也可以加入到动作列表中。
           ThingAction
          
           ThingAction1
          执行指定事物的动作。
           ThingCollection
          事物集合,从指定的事物路径列表里获取事物并放到一个List中。
           ThingCollectionIterator
          事物集合,从指定的事物路径列表里获取事物并放到一个List中。
           ThingSelector
          返回一个事物路径指定的事物,如果变量名不为空把它保存到指定的变量范围中。
           ThingTemplateAction
          事物模板动作,首先通过第一个子节点ThingTemplate生成事物。
           Throw
          抛出一个value属性指定的变量。
           Try
          XWorker中除了Java的Throwable还可以把普通对象抛出来,catch时指定类的全名,如果匹配那么执行Catch的子节点。
           ValueFactory
          构造一些基本类型的数据。
           While
          while循环。
           Workflow
          工作流
 
字段详细信息

description点击打开事物


name点击打开事物


 
方法详细信息
 
子事物详细信息

Aggregate点击打开事物

对一个List或者数组进行聚合操作。


Begin点击打开事物

执行一组动作。

一个动作只能是一个事物,但有的时候动作是有一组动作构成的,为解决一组动作的情况只有把它们放在一个父动作下,因为Begin起到这个作用。

Begin可以添加子动作,所有的子动作顺序执行,如果有Return、Break、Exception等动作被执行了,则后面的动作将不被执行。

注意:

    子动作不能有名为run的动作,否则该run方法将重写Begin的run方法。


Break点击打开事物

参看:

    世界事物BreakContinueDoForGroovyActionIfIterateJavaActionJdkScriptResultReturnSwitchThrowTryWhile上下文


CodeGenerator点击打开事物

代码生成器,主要功能是生成、替换或者修改目标文件,一次执行只处理一个文件。

文件路径的确认方式

    默认读属性filePath,通过重载getFilePath方法自定义文件路径。

文件生成方式

    生成一次:如果目标文件不存在生成,否则不征程。
    覆盖:用新的内容覆盖旧的内容。
    替换内容:替换目标文件的指定内容。指定内容使用$#<name>#> $#<name>#>来包围要替换的内容,其中name是内容参数。

文件内容

    Content下的子节点为文件内容定义,可以定义多个,但如果是生成文件或覆盖文件则只使用第一个,当替换内容时每一个内容都使用自己名字替换目标文本中的内容。


Continue点击打开事物

参看:

    世界事物BreakContinueDoForGroovyActionIfIterateJavaActionJdkScriptResultReturnSwitchThrowTryWhile上下文


Do点击打开事物

相当于

do{

    //执行子动作下的动作

}while(self.doAction("condition", actionContext));

其中condition可以使用Ognl表达式,也可以是自己的动作condition。


For点击打开事物

for(self.doAction("init", actionContext);self.doAction('condition", actionCotnext"); self.doAction("control", actionContext")){

    //子动作

}

其中init, condition和control方法for自己的行为,分别是初始化,循环条件判断和变量控制。


FunctionAction点击打开事物

在普通动作中使用函数式编程中的函数。

designModel

    如果为true那么每次执行都会进入设计编辑界面,否则是以安静的非UI的方式运行。

设置函数

    请添加子事物Function,只有第一个子节点才会生效,Function子节点是一个Return函数。如果Function子节点不存在不会抛出异常,只有一条警告的日志。

    安静模式执行时不能有UI相关的函数,否会会抛出异常。

返回值

    如果designModel=true返回动作执行时返回null,否则返回函数执行的结果。


GetAttributeSelf点击打开事物

获取self事物的指定属性值,尤其是属性值是字符串时的一些约定。另外这里的self指的是把本动作作为行为的事物。

属性值的前缀约定:


GetThingFromSelf点击打开事物

从一个事物的属性或子事物定义的事物,优先从属性中获取事物,其次从子事物中获取,返回值为获取的事物。


GetValueByThingAttribute点击打开事物

返回指定事物的某个属性的值或以该属性值为变量名从ActionContext中使用Ognl取值。

事物
    通过thingVarName和thingPath获取。

是否从ActionContext中取值
    isVarAttribute=true。

属性名称
    varAttribute。

获取的值是否保存到变量上下文中
    varName不为空。


GetVariableOgnl点击打开事物

使用Ognl表达式获取变量。

可以重载的方法


GetVariableSelf点击打开事物

用于其他事物的取值,即其他事物调用此方法根据其他事物的属性取值,而其他事物在下面的变量名为parentSelf,本动作事物为self。

变量获取顺序:


GrabDataFromText点击打开事物


GroovyAction点击打开事物

使用Groovy脚本定义的动作。

Groovy脚本中未经声明直接使用的变量为全局变量,在脚本中执行完还继续存在,Groovy脚本中声明的变量为局部变量,在脚本执行完后就会消失。

参看:

    世界事物BreakContinueDoForGroovyActionIfIterateJavaActionJdkScriptResultReturnSwitchThrowTryWhile上下文

 


Group点击打开事物

用于把一个List按照指定的字段分组,分组后的List是List<Map<String, Object>>的结构,其中Map中的_data为分组后的List数据,分组的字段名请不要使用_data。


If点击打开事物

IF的结构大概如下

if(self.doAction("condition", actionContext)){

     //if下的子动作

}else if(elseIf.doAction("condition", actionContext)){

     //elseif下的子动作

}else{

    //else下的子动作

}


Iterator点击打开事物

每次遍历会有<varName>,<varName>_index,<varName>_hasNext三个临时变量。

集合默认是通过属性collectionName设置的,可以重载getCollection方法返回指定的集合。


JavaAction点击打开事物

系统最基础的动作定义,元系统从底层只支持JavaAction,其他类型的动作比如JdkScript都是见解利用此动作而实现的。

参看:

    世界事物BreakContinueDoForGroovyActionIfIterateJavaActionJdkScriptResultReturnSwitchThrowTryWhile上下文

 


JdkScript点击打开事物

JdkScript

使用JDK1.6的Script定义的动作,即支持使用JSR-223规范的脚本。

使用方法

建议使用GroovyAction

建议使用GroovyAction的动作作为脚本,由于JdkScript用的还比较少,所以暂时还不清楚有哪些优缺点。


Log点击打开事物

把一个变量打印到日志中。


LogTemplate点击打开事物

使用Freemarker打印日志。


LuaAction点击打开事物

Lua脚本的动作。

使用Java的ScriptEngine的实现。


MethodCall点击打开事物

方法调用。

参数通过PropertyGetter或ValueFactory获取,请注意子事物的顺序为参数的顺序。


NOOP点击打开事物

没有任何操作的动作,一般用于只定义一个动作。


ObjectFactory点击打开事物

Java对象的构造工厂。


ObjectPropertiesSetter点击打开事物


Ongl点击打开事物

Ognl表达式,可以有自己的参数。


ParamsToObject点击打开事物

一个有x1=v1&x2=v2&....&xn=vn参数转化为对象设置的属性。


Print点击打开事物

不换行的打印变量到控制台。


PrintTemplate点击打开事物

不换行的使用模板生成字符串并打印到控制台。

使用Freemarker模板。


Println点击打开事物

换行的打印变量到控制台。


PrintlnTemplate点击打开事物

换行的使用模板生成字符串并打印到控制台。

使用Freemarker模板。


PropertyChild点击打开事物

设置属性值,只能是事物的执行动作,因为需要取事物的子事物。

通过一个事物的第一个子节点设置对象的属性。


PropertyGetter点击打开事物

用于取值,使用Ognl表达式。


PropertySetter点击打开事物

设置属性值。


RefAction点击打开事物

引用并执行其他动作。


Return点击打开事物

return控制语句,返回常量、变量或者表达式变量,只能返回其中一个,优先返回变量。


ReturnFirstNotNull点击打开事物

执行一组动作,如果有一个动作的返回值不为null,那么就立刻返回,其他类似Begin。


SecurityHandler点击打开事物

安全处理器,运行后将注册到SecurityManager上。

安全处理器是什么?

    可以用作权限处理,比如在登录以后才能访问指定的数据对象等。

    实现方法:

  1. 注册安全处理器到SecurityManager上。
    安全处理器注册后会加入到一个列表,第一个能够接受安全处理的处理器处理安全。
  2. 相关应用调用SecurityManager的doCheck(byte type, String path, ActionContext actionContext)方法检验权限。

Sort点击打开事物

对一个List进行排序。


Switch点击打开事物

swtich和Java的switch有很大不同,它相当于:

for(case: self.Caese){

     if(case.doAction("condition", actionContext)){

          //case子动作

     }

     if(break){

         break;

     }

}

if(!caseBreak){

     //default子动作

}

可以用IF代替。


Task点击打开事物

任务是在其他线程里执行,一般是定时任务或要在其他线程里的动作。

需要实现的方法

定时任务

    在Schedule中设置。

固定日期的定时任务

    比如每天三点中执行的任务,那么选择fixTime=true,fixTimeStr=03:00,timeUnit=DAYS,period=1。


Thing点击打开事物

由于任何事物都可以转换为动作(Action),所以普通事物也可以加入到动作列表中。

作为动作的事物应该有run方法,最好通过添加描述的方式编辑事物。


ThingAction点击打开事物


ThingAction1点击打开事物

执行指定事物的动作。


ThingCollection点击打开事物

事物集合,从指定的事物路径列表里获取事物并放到一个List中。


ThingCollectionIterator点击打开事物

事物集合,从指定的事物路径列表里获取事物并放到一个List中。


ThingSelector点击打开事物

返回一个事物路径指定的事物,如果变量名不为空把它保存到指定的变量范围中。


ThingTemplateAction点击打开事物

事物模板动作,首先通过第一个子节点ThingTemplate生成事物。

1. useRootThing

如果为true返回的是一个事物,这个事物本身是空的,其子节点是通过模板创建事物列表,如果为false,那么返回这个事物的子节点(List)。

2. actionName

如果不为空,那么会执行创建的事物的名为<actionName>的动作,并返回这个动作的结果。

3. varName

如果不为空,那么会把执行的结果以此变量名放入到动作上下文中。


Throw点击打开事物

抛出一个value属性指定的变量。


Try点击打开事物

XWorker中除了Java的Throwable还可以把普通对象抛出来,catch时指定类的全名,如果匹配那么执行Catch的子节点。

try{

     //执行ChildAction

}catch(obj instanceof Catch.exception){

    //执行catch的子节点

}finally{

    //执行Finally的子节点

}


ValueFactory点击打开事物

构造一些基本类型的数据。

常量

除了type=ognl之外其他都是常量,首先取value的值,然后转化为相对应的类型的值。

ognl

如果type=ognl,那么value对应的是ognl的表达式。


While点击打开事物

while循环。

while(self.doAction("condition", actionContext)){

    //子动作

}

其中condition是While自己的方法,返回true/false,While开启新的局部变量范围。

 


Workflow点击打开事物

工作流

    一个简单的工作流框架,和一般的工作流不同的是该工作流框架只是一个最简单的任务流程,只负责判断任务的前置是否完成然后运行任务,以及判断流程的结束等。如果要实现特定的功能比如审批流程,那么可以通过监听以及具体的任务来实现。

任务

    工作流执行后主要就是执行任务,一个任务有前置任务和后置任务,前置任务满足条件则执行,执行完毕后执行后置任务。

    任务可以是任意的事物,一个任务有canStart、run和getNextTasks方法, canStart返回true任务才执行,任务执行时会调用run方法,任务执行完毕后会带哦用getNextTasks方法获取下级任务的事物列表。

    一般情况下可以使用xworker.workflow.WorkflowTask来定义任务,新的任务都可以注册到xworker.workflow.WorkflowTasks事物下,这样所有的工作流都可以使用这个任务了。

临时变量存储

    工作流运行时产生的临时变量通过DataProvider保存和获取,任务在执行方法时可能需要,此时任务的方法了可以使用dataProvider变量。

工作流管理器

    一个工作流管理器通常是全局的,用于保存和处理流程,还可以做一些特殊处理,比如定期检查是否过期等。

监听

    当工作流的状态发生变化时可以监听事件。监听有两种实现方式,一是在工作流事物定义里重载statusChanged方法,二是获取工作流Java的实例后手工添加相应的listener。