服务端方法
因为系统中,服务端方法数量一般多于客户端方法,使用范围更广,因此先说明服务端方法的开发方式。
系统中的方法,都在Administration->Method中进行书写,新建方法后,出现以下页面:
方法的工具栏中,中间部分的下拉框Server-side和Client-side,表示该方法为客户端或者服务端方法,若选择Server-side,后面可以选择编程语言C#或者VB,若为Client-side,则后面为javascript.
其它工具栏的作用,与Visio Studio中的类似,不再一一详细说明。
当方法书写完成后,需要点击验证语法按钮,验证是否有语法错误。
上述方法中,服务端方法的代码为:
Item qry=this.newItem("ItemType","get");
return qry.apply();
其中,this表示一个上下文对象,即当前对象。
get表示该方法的Action,此处为获取;
最终返回qry.apply();结果为一个Item;
该方法表示获取系统中所有的ItemType信息;
此服务端方法为一个通用的服务端方法,保存之后,点击菜单栏"Actions"->"Run Server Method",可以直接执行该方法;
返回结果如下,会查询出系统中所有的对象类信息:
注:大部分服务端方法都是嵌入对应的事件中执行。
方法的常用Action说明(区分大小写)如下:
操作 | 说明 |
add | 添加一条数据 |
update | 更新数据
|
purge | 删除数据的最新版本 |
delete | 删除数据的所有版本,如果数据本身没有版本,则purge和delete一样。 |
get | 获取数据 |
edit | 编辑数据,包含锁定(lock),更新(update),解锁(unlock)三个操作。 |
create | 建立数据。如果数据已经存在,则执行get;若数据不存在,则执行add; |
merge | 合并数据。如果数据已经存在,则执行edit;若数据不存在,则执行add; |
isLocked | 判断当前对象的锁定状态,0:未锁定;1:自己锁定; 2: 其他人员锁定。 |
lockItem | 锁定对象 |
Action也可以设置对应的Attribute,常见的如下:
Attribute名称 | 数据类型 | 说明 |
select | string | 相当于SQL的select,可以指定查询的属性字段 |
orderBy | string | 相当于SQL的order by,可以指定结果排序方式 |
page | Integer | 查询结果的页码 |
pagesize | Integer | 查询结果的每页显示条数 |
maxRecords | Integer | 最大查询结果数 |
severEvents | Boolean | 是否执行服务端方法,如果为0则不执行,默认为1.例:当前方法为update,系统中写了多个方法,在update时执行,若设置为0,则其它update方法不触发。 |
可在方法的Code Guide查看Innovator和Item对应的方法和具体信息,Innovator类和Item类为最常用的两个Class。
服务端方法的触发事件
主要有以下位置,可以添加服务端方法:
1.对象类的服务端事件,此处可以加入多个服务端方法:
事件 | 说明 |
OnBeforeXXX | 在服务端事件之前触发该方法 |
OnAfterXXX | 在服务端事件之后触发该方法 |
OnXXX | 用自定义方法替换该方法 |
2.生命周期图路径,Pre表示在生命周期状态提升前触发,Post表示在生命周期状态提升后触发;
3.工作流程图任务的Server Events页签:
此处可以添加多个服务端方法,可以选择在对应的事件时触发。On Activate表示在任务启动时触发,该选项使用最多。
工作流路径上触发,Pre Methods表示在路径通过之前触发,Post Methods表示在路径通过之后触发:
4.全局方法(既可为客户端方法,也可为服务端方法),在Action中触发;
本节内容先到此,后续继续说明this关键字,Innovator类和Item类的使用方法。