BOWP的服务端访问策略

BOWP的访问策略

BOWP的访问策略模式:定义了触发的条件和规则(name, accessTypes, busObjType和trigFields),一旦符合条件即会调用定义的方法,简化了代码。例如以下:
例如1:用户查询个人的用户信息条件设置,后台的代码片段如下:

@AccessPolicy(name="doSelectAll",accessTypes = AccessType.QueryDefaultSet)
public void setQueryUserId(IDatObj datObj){     
    datObj.overrideParam(doSelectAll.USR_ID.name(), this.getUserID());      
}

例如2:在保存时,检查服务器的IP和端口不能重复,后台的代码片段如下:

@AccessPolicy(accessTypes={AccessType.SAVE},
trigFields={"doServer.IP_ADDR","doServer.PORT_NO"})
public void checkDupl(String as_IPAddr, String as_PortNo){
    BufRow br = this.getDatObj(doObj.doServer).getCurrentRow();     
    Util.checkDuplicateInTable(br, doServer.IP_ADDR, doServer.PORT_NO);     
}

该平台提供了两种访问策略模式:

  1. 服务端访问策略模式
  2. 客户端访问策略模式

服务端访问策略模式条件和规则说明:

  1. accessTypes
  2. name
  3. trigFields
  4. busObjType
  5. isEnquiry
  6. isActive
  7. isOnlyPrivilegeMethod
  8. privilegeKey
  9. privilegeDesc
  10. point
  11. order

服务端accessTypes

1.accessTypes:服务端执行命令种类

目前服务端提供的命令如下:

accessTypes 类型 触发时机 访问策略参数 返回值
Button id及字段类型 点击Button触发 跟trigField相关参数
FocusField 字段类型 控件获得焦点触发 跟trigField相关参数
LostField 字段类型 控件失去焦点触发 跟trigField相关参数
FocusRecord 字段类型 移到这条记录触发 跟trigField相关参数
LostRecord 字段类型 移出这条记录触发 跟trigField相关参数
LostGrid id及字段类型 Grid失去焦点触发 跟trigField相关参数
FocusGrid id及字段类型 Grid获得焦点触发 跟trigField相关参数
FocusTab id及字段类型 tab获得焦点触发 跟trigField相关参数
LostTab id及字段类型 tab获得焦点触发 跟trigField相关参数
OpenWindow id及字段类型 open Window获得焦点触发 跟trigField相关参数
CloseWindow id及字段类型 close Window获得焦点触发 跟trigField相关参数
SAVE 字段类型 save动作触发 跟trigField相关参数
CHECK 字段类型 审批检查动作触发 跟trigField相关参数
APPROVE 字段类型 审批动作触发 跟trigField相关参数
REJECT 字段类型 审批拒绝动作触发 跟trigField相关参数
PostEnquiry 数据对象 查找每条记录处理 BufRow
AfterEventQuery 数据对象 查找对象集合处理 list<BufRow>
BeforeLoadSO name是[searchBusObj].[searchDatObj] getSchObj之前处理 BufRow,SchObj
AfterLoadSO So对象 getSchObj之后处理 BufRow,SchObj
OuterLoad 数据对象 加载外部数据 BufRow,DatObj
NewRow 数据对象 新建记录 BufRow
DelRow 数据对象 删除记录 BufRow
ConstructSelectSQL 数据对象 重新构造查询sql语句 BufRow,List<Object>,DatOjb
BeforeInsertRow 数据对象 数据库插入前 BufRow Boolean (是否要新增)
BeforeUpdateRow 数据对象 数据库更改前 BufRow Boolean (是否要更改)
BeforeDeleteRow 数据对象 数据库删除前 BufRow Boolean (是否要删除)
AfterInsertRow 数据对象 数据库插入完后 Listt<BufRow>
AfterUpdateRow 数据对象 数据库更改完后 Listt<BufRow>
AfterDeleteRow 数据对象 数据库删除完后 Listt<BufRow>
AccessOrder 如果第二个accessType为“Field“, name设置为[datObj]+”.”+[fieldName],除此以外,根据第二个accessType的要求定义name 在同一级别有多个访问策略进行排序 Listt<Trig>
TransferredMsg name是MOD_ID+”_”+MSG_CDE String… (根据MOD_ID和MSG_CDE获取表MSG的参数) BufRow,Object[]
BeforeCallMethod name是方法名 调用这个方法前执行 跟此方法对应的参数
AfterCallMethod name是方法名 调用这个方法后执行 跟此方法对应的参数 还回值可以通过
SessionMgr.singleton().
getLocalVar(RETURNVALUE)得到
ErrorCallMethod name是方法名 调用这个方法出错时执行
FinalCallMethod name是方法名 调用这个方法都执行
QueryDefaultSet 数据对象 设置查询条件 DatObj
Copy 数据对象 拷贝对象时 BufRow,BufRow
Edit 数据对象 编辑对象时 BufRow
Cancel 数据对象 还原对象时 BufRow
OuterDel 数据对象 外部删除数据 Listt<BufRow>
OuterUpdate 数据对象 外部更改数据 Listt<BufRow>
OuterInsert 数据对象 外部插入数据 Listt<BufRow>
QueryHint 数据对象 SqL优化 PreparedStatement
BeforeNewRow 数据对象 新建记录前处理 DatObj,poid,Record
AfterDelRow 数据对象 删除记录后处理 BufRow
EmptyRecordDefault 数据对象 查询空记录处理 BufRow,DatObj
ValueChange 字段类型 值改变的时候触发 跟trigField相关参数
OTHER 字段类型 其他类型触发 跟trigField相关参数
Filter 数据对象 过滤数据库数据 Result Boolean (是否要过滤)
DupPrimaryKey 数据对象 主键重复除了 Result Boolean (是否要过滤)
2.name:访问策略的名字
命名情况 使用访问策略
datObj的名字 PostEnquiry,AfterEventQuery,OuterLoad,NewRow,DelRow,ConstructSelectSQL,
BeforeInsertRow,BeforeUpdateRow,BeforeDeleteRow,AfterInsertRow,AfterUpdateRow,
AfterDeleteRow,AccessOrderQueryDefaultSet,Copy,Edit,Cancel,OuterDel,OuterUpdate,
OuterInsert,QueryHint,BeforeNewRow,AfterDelRow,EmptyRecordDefault,ValueChange,
Filter,DupPrimaryKey
控件ID Button,FocusGird,LostGrid,FocusTab,LostTab,OpenWindow,CloseWindow
方法名 BeforeCallMethod,AfterCallMethod,ErrorCallMethod,FinalCallMethod
searchBusobj+”.”+searchObj BeforeLoadSO,AfterLoadSO
mode+”.”+code TransferredMsg
自定义名 OTHER
3. trigFields:访问策略触发字段
命名情况 对应的方法参数
单个字段 这个字段对应参数
多个字段 这些字段对应多个参数
单个字段 BufRow
多个字段 BufRow

访问策略触发字段特殊字符

特殊字符 说明
& 值可以为空
* 这条记录有改变
** 这条记录及子记录有改变

访问策略触发字段对应的数据类型
1. 这个字段对应的数据类型
2. BufRow
3. EntityBean
4. Listt<BufRow>
5. Listt<EntityBean>

4. busObjType:这个只有有trigFields才生效
业务对象类型 说明
ValChg 数据有改变,此访问策略才执行
ValChgSession 数据有改变,此访问策略才执行,但执行时出现错误时,在此策略改变的数据回退
Must 不管数据有没改变,都执行这个访问策略
MustSession 不管数据有没改变,都执行这个访问策略,但执行时出现错误时,在此策略改变的数据回退
5. isEnquiry

isEnquiry为true,业务是查询时,此访问策略才执行,反之

6. isActive

isActive为true此访问策略才执行,反之

7. isOnlyPrivilegeMethod

isOnlyPrivilegeMethod为true,这个访问策略是空方法,只有用来权限管理

8. privilegeKey

privilegeKey:功能权限标记(必须是唯一的) 用来权限管理

9. privilegeDesc

privilegeKey:功能权限描述

10. point

point:扩展点

11. order

order:如果在同一服务命令时,有多个访问策略时,如果有依赖关系,需要指定执行顺序

猜你喜欢

转载自blog.csdn.net/wangzhongming77/article/details/80484326