介绍苍穹的开发平台设计器里面的“操作”原创
金蝶云社区-吴锐雄
吴锐雄
11人赞赏了该文章 3,340次浏览 未经作者许可,禁止转载编辑于2023年02月14日 15:39:17
summary-icon摘要由AI智能服务提供

本文介绍了苍穹平台中“操作”功能的重要性及详细使用方法。文中阐述了“操作”的类型(表单操作和实体操作)、业务场景(如增删改查、工作流等)、配置方式(设计器或代码调用)和使用场景。此外,还详细说明了如何在工具栏添加操作按钮、新增操作类型、配置操作前后的提示信息,并通过代码示例展示了在不同场景中如何使用和操作这些功能,包括调用服务帮助类、单据插件调用、操作插件开发及注册等。最后,介绍了通过OpenApi调用操作的方法及相关文档链接。


创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^


前言

最近与生态伙伴沟通时,发现有很多新接触苍穹的开发者对于苍穹的“操作”不是很熟悉,所以写一篇文章介绍苍穹的一项重要的功能:操作。


介绍“操作”

“操作”有很多业务场景,每个操作都有操作类型和操作编码。

在苍穹里面,“操作”两种类型

表单操作:对界面进行处理,如关闭界面;

实体操作:更新数据库,如保存;


每种“操作”都对应一种业务场景,举例说明:

对数据的增删改查的业务场景,例如:保存、删除等等。

关于流程(工作流)的业务场景,例如:提交、撤销、审核、反审核等等

还有一些其他的业务场景,例如:打印,引出数据,刷新页面,退出页面等等。


“操作”可以在设计器上配置,也支持通过代码来调用。


使用场景

苍穹里面有很多的预置好的操作,例如:新增,保存,提交,打印,引入,引出等等。

这些操作基本可以覆盖用户对数据使用的绝大部分业务场景了。


操作可以在单据列表和单据详情中使用,如下图,

这一栏工具栏里面的按钮,都是绑定了操作的,点击对应的按钮,就可以执行相应的操作

image.png

image.png


工具栏添加操作按钮

在开发平台,页面设计器中,可以在工具栏上添加一个按钮,然后绑定一个操作:

点击加号,添加工具栏按钮:

Image_20211008174630.png

选择刚刚新加的按钮节点,选择右侧的业务栏上的操作代码

Image_20211008174639.png

选择一行操作编码,例如选择“新增”,点击确定,然后工具栏的按钮就绑定上了这个操作

image.png

Image_20211008174651.png


工具栏添加当前单据没有的操作

苍穹会给标准的单据列表预置一些操作,当前我们的业务需求有其他的操作时,就可以新增一个操作类型。

在打开选择操作列表之后,这个列表里面并不是全部的操作,是一部分预置的操作,开发者还可以再添加新的操作到这个单据列表里面。

image.png

image.png


操作前提示和操作后提示

通常情况下,操作前默认不会提示框,以及在操作完成之后会给出提示,例如:“xxx成功”。


以下步骤,可以给操作配置一个操作前提示框,以及操作成功之后的提示信息:


如下图,开始给“提交”操作配置一个提交前的 确认操作提示框:

image.png

image.png

image.png

经过上述配置,提交成功之后也有提示:

image.png





代码中使用操作的几种方式

1.调用SaveServiceHelper做保存操作,DeleteServiceHelper做删除操作

以下仅给出部分代码

OperationResult result = SaveServiceHelper.saveOperate(formNumber, dynamicObjects, OperateOption.create());

SaveServiceHelper的保存操作,用来删除某行单据体之后保存,相当于在单据页面上删除单据体的分录之后点击保存按钮,具体案例请参考文章:

https://club.kdcloud.com/article/183678515395167232

https://club.kdcloud.com/article/205695637969862400



2.实体操作服务帮助类OperationServiceHelper

审核操作

OperationServiceHelper.executeOperate("audit", "kded_testt", new Object[] {id}, OperateOption.create());

具体案例请参考文章:

https://club.kdcloud.com/article/202539250599359488



3.单据插件上调用getView().invokeOperation()

单据提交操作,等效于点击工具栏上的提交按钮

可以在父类插件AbstractBillPlugin的派生类中调用以下代码,把当前单据做一个提交操作。

 this.getView().invokeOperation("submit");

具体案例请参考文章:

https://club.kdcloud.com/article/136924752286676736



4.在单据页面插件中获取操作执行结果

AbstractFormPlugin的派生类,有两个事件:


beforeDoOperation操作前事件,通过setCancel可以取消当前操作
afterDoOperation操作后事件


继承AbstractFormPlugin类,重写beforeDoOperation,afterDoOperation。

  • beforeDoOperation,操作在执行之前,会调用该事件,用于判断数据是否符合条件,如果不符合,取消当前操作。

  • afterDoOperation,操作执行后,会调用该事件,用于获取操作结果,根据操作结果执行一些相应的业务操作。


以第3点的提交操作为例,我们可以在beforeDoOperation事件中,获取model,然后判断当前单据的数据是否可以进行提交,如果不满足提交条件,就取消当前提交操作。

例如在afterDoOperation事件中,获取提交结果,如果提交成功,则关闭当前页面。


具体案例请参考文章:

https://dev.kingdee.com/index/docsNew/b74369d3-40d4-49e4-a7fe-0e60b7ffb85b

https://club.kdcloud.com/article/167933067377099776

https://club.kdcloud.com/article/96536077644569600



5.操作插件

实体操作,可以绑定操作插件,并进行开发,对操作写数据入库的过程,进行干预。

表单操作,不会写数据入库,只能针对表单界面及界面数据进行处理,不支持操作插件。


继承AbstractOperationServicePlugIn,可以实现操作插件。

操作插件常用事件

beforeExecuteOperationTransaction事件:插件可以在此事件,对已经通过校验的数据,进行整理,或者取消操作的执行。

beginOperationTransaction事件:可以在此事件,进行数据同步处理,可能会执行失败的同步处理,如和第三方系统的对接,放在这个事件比较合适。

endOperationTransaction事件可以在此事件,进行数据同步处理,可能执行失败的同步处理,不适合放在这个事件执行,事务回滚比较麻烦。

rollbackOperation事件:可以在此事件,对没有事务保护的数据更新进行补偿。

afterExecuteOperationTransaction事件:可以在此事件,对操作结果进行整理,或者执行其他无需事务保护的逻辑。


单据操作插件相关文档:

https://vip.kingdee.com/link/s/MUo7Z

https://vip.kingdee.com/link/s/MUo7f


具体案例请参考文章:

https://dev.kingdee.com/index/docsNew/6fb8daba-2b52-41bb-bc1e-820237e2108c

https://club.kdcloud.com/article/208241211567092480



6.注册操作插件

继承AbstractOperationServicePlugIn,给操作注册一个操作插件

image.png

image.png



7.页面操作事件和操作插件的区别

第4点的页面插件AbstractFormPlugin,第5点的操作插件AbstractOperationServicePlugIn,这两者是有区别的。

例如:

  • 在单据A的保存操作上做了操作插件,在其他页面上,使用SaveServiceHelper.saveOperate,保存了单据A,那么也能执行单据A的操作插件的beforeExecuteOperationTransaction事件

  • 单据插件只能在打开这个页面上响应,只有进入单据A的详情页面才能触发beforeDoOperation事件



Open Api 调用操作

开放平台的OpenApi,支持通过http请求,调用api来执行操作。

参考以下文章:


API文档介绍

https://vip.kingdee.com/link/s/MUocD


保存操作API

https://vip.kingdee.com/link/s/MUoce


赞 11