单据操作插件-插件基类

1 插件基类介绍
系统预置了一个操作插件基类 AbstractOperationServicePlugIn,实现了操作插件接口;
自定义的操作插件,扩展预置的操作插件基类 AbstractOperationServicePlugIn 即可。
单据操作说明:
系统预置了一批操作,可以绑定在界面菜单、按钮上;用户点击按钮时,即自动执行这些操作,完成特定的操作功能。
这些预置的操作,可以根据是否写数据入库,分为两大类:
表单操作:仅对表单界面及界面上的数据进行处理,不会写数据入库,如”新建”、”关闭”操作;
实体操作:会写数据入库,只能配置在单据、基础资料上,如”保存”、”提交”、”审核”操作。
可以给单据上绑定的实体操作,单独开发操作插件,对操作写数据入库的过程,进行干预。
本节介绍单据操作插件及其事件。
表单操作,不会写数据入库,只能针对表单界面及界面数据进行处理,不支持操作插件,但可以开发表单插件,对表单操作进行适度的干预;
与表单操作相关的表单插件事件,包括:
1. 菜单、按钮点击事件(beforeitemClick, itemClick, beforeClick, click),可以取消操作的执行;
2. 操作执行前后事件(beforeDoOperation, afterDoOperation),准备操作参数、接收操作执行结果刷新界面。
说明:实体操作清单。
下表列出了系统预置的实体操作,只能对这些操作,开发操作插件(其他未列出的操作属于界面操作,不能开发操作插件)。
操作 | 功能说明 |
保存 (save) | 把单据数据包中的数据,存入单据表格 |
保存并新增 (saveandnew) | 把单据数据包中的数据,存入单据表格; 保存成功后,清空界面数据,进入新增状态 |
状态转换 (statusconvert) | 切换单据状态字段值,并更新单据表格 |
提交 (submit) | 切换单据状态字段值为”审核中”,并更新单据表格 |
提交并新增 (submitandnew) | 切换单据状态字段值为”审核中”, 并更新单据表格 提交成功后,清空界面数据,进入新增状态 |
撤销 (unsubmit) | 切换单据状态值为”暂存”, 并更新单据表格 |
审核 (audit) | 切换单据状态值为”已审核”,并记录审核人,更新单据表格 |
反审核 (unaudit) | 切换单据状态值为”暂存”,并清除审核人,更新单据表格 |
禁用 (disable) | 切换使用状态为”停用”,并更新单据表格 |
启用 (enable) | 切换使用状态为”启用”,并更新单据表格 |
作废 (invalid) | 切换作废状态为”作废”,并更新单据表格 |
生效 (valid) | 切换作废状态为”正常”,并更新单据表格 |
删除 (delete) | 从单据表格中,删除单据数据 |
空操作 (donothing) | 特殊的实体操作,本身并不写单据入库; 但会执行操作的全部过程,包括权限校验、写日志,支持操作插件开发,触发全部操作事件; |
2 插件接口
单据操作插件接口为IOperationServicePlugIn、IOperationService。
3 方法介绍
插件基类 AbstractOperationServicePlugIn 内置了如下属性方法和本地变量,供插件访问,用以获取操作执行上下文:
方法 | 说明 |
billEntityType | 单据主实体 |
operateMeta | 操作配置,据此获知当前执行的操作信息 |
operationResult | 操作结果,可以向其中添加操作提示信息 |
getOption() | 自定义操作参数字典,可以包含各种自定义操作参数 |
4 创建并注册插件
自定义的单据操作插件,需要扩展单据操作插件基类 AbstractOperationServicePlugIn。
如下例:
package kd.bos.plugin.sample.bill.bizoperation.bizcase;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
import kd.bos.entity.plugin.args.RollbackOperationArgs;
/**
* 演示操作插件全部事件的捕获及触发时机
*
* @author rd_johnnyding
* @remark
* 本示例代码,捕捉的事件,由前往后触发
*
*/
public class OperationEventSample extends AbstractOperationServicePlugIn {
/**
* 操作执行,加载单据数据包之前,触发此事件;
*
* @remark
* 在单据列表上执行单据操作,传入的是单据内码;
* 系统需要先根据传入的单据内码,加载单据数据包,其中只包含操作要用到的字段,然后再执行操作;
* 在加载单据数据包之前,操作引擎触发此事件;
*
* 插件需要在此事件,添加需要用到的字段;
* 否则,系统加载的单据数据包,可能没有插件要用到的字段值,从而引发中断
*/
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
this.print单据操作插件-插件基类
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



