ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# CAP4自定义触发开发说明文档 一、概念 CAP4中,触发的概念进行了统一,将触发分为了表间触发(标准的触发设置,即原来的触发、联动、回写)和单表触发,原人员、会议、DEE等在CAP4中都是属于单表触发的分支。因此,自定义触发的设置入口放在单表触发设置中,具体入口:应用定制平台/设计中心/具体业务包/单表触发+号,如图: ![](https://img.kancloud.cn/2c/d0/2cd0e752907f4578ac8d118c843b2dcd_1356x719.png) 其次,根据cap3的自定义触发的规则,分为了无设置界面自定义触发和有设置界面自定义触发。无设置界面自定义触发表示不需要有具体动作设置,仅有一个动作类型的选择,有设置界面自定义触发表示需要进行具体的动作设置,进行一些业务规则的前端设置。 二、自定义触发设置代码结果 ─seeyon  ├─xxx │  └─FormTriggerCustomTest1DesignManagerjava  │  └─FormTriggerCustomTest2DesignManagerjava └─WEB-INF      ├─cfgHome │  └─xxx      │      └─spring      │            spring-test-manager.xml ├─jsp │  └─xxx │  └─customerTriggerTest2.jsp 三、代码示例 1、设置态  FormTriggerCustomDesignManager 自定义触发设置抽象父类  FormTriggerCustomTest1DesignManager  无界面自定义触发示例  FormTriggerCustomTest2DesignManager  有界面自定义触发示例 ![](https://img.kancloud.cn/56/b8/56b89eb3c19932c48b4810a599770570_793x465.png) ![](https://img.kancloud.cn/9a/e2/9ae2b24baf1ad6d8b1e3adcaa351a2e7_865x593.png)     其中,父类方法hasSettingPage和getActionSettingUrl配合使用,只有hasSettingPage为true时,其getActionSettingUrl方法返回的url才有效。hasSettingPage默认返回false。这两个方法根据需要进行重写。目前hasSettingPage方法暂时没有使用,仅做预留 注意,父类有个默认实现方法checkFieldInActionSet,此方法是去处理修改字段时校验此字段是否参与触发关系设置的。如果业务需要进行校验,重写的时候如果有参与设置,则返回值必须为FormTriggerBean.CheckResultEnum.customerAction.getKey();没有参与,则返回值必须为FormTriggerBean.CheckResultEnum.none.getKey(),不能为其他值,否则修改表单字段后保存会报异常。     另外,如果是有界面自定义触发,则需要在xxxController中增加getActionSettingUrl中指定的页面跳转方法,同时增加对应的jsp,此jsp就是具体的自定义触发动作的设置界面。 ![](https://img.kancloud.cn/17/02/17028bdfd95c933c45feb0a3fa4d5b38_1072x109.png) ![](https://img.kancloud.cn/ad/20/ad2038147570ed1023a7f0cfa56ac823_902x684.png)   无界面自定义触发设置效果: ![](../../images/custom-trigger/pic6.png)  有界面自定义触发设置效果: ![](https://img.kancloud.cn/48/3d/483d79bfff3ee5c10e2e13c1620be174_772x516.png) 2、运行态 FormTriggerCustomBaseAction 自定义触发运行抽象父类 FormTriggerCustomTest1Action 无界面自定义触发运行类 FormTriggerCustomTest2Action 有界面自定义触发运行类 ![](https://img.kancloud.cn/2d/e7/2de7b6db00d1046156322a86cfbedfff_948x583.png) 子类实现父类抽象方法getId()、init()和execute(FormTriggerActionContext context);视情况重写canUse()和预执行方法preExecute,preExecute返回false为预执行不通过,会转到执行队列末尾等待下次执行,返回true表示预执行通过。canUse方法目前暂未使用 在7.0sp3基础上进行客开,有细节的区分 FormTriggerBaseActionManager 触发运行公共抽象父类 FormTriggerCustomTest1Action 无界面自定义触发运行类 FormTriggerCustomTest2Action 有界面自定义触发运行类 ![](https://img.kancloud.cn/98/a9/98a9380f7727012d00450ad6c3f5e0ea_858x496.png) 子类不再需要实现父类init方法,仅需实现getId和execute方法即可。其余canUse和preExecute方法视业务需求重写,preExecute返回false为预执行不通过,会转到执行队列末尾等待下次执行,返回true表示预执行通过。canUse方法目前暂未使用 注:设置态的子类和运行态的子类java文件都必须在spring文件中进行注册,否则无法使用