# CAP4自定义触发开发说明文档
一、概念
CAP4中,触发的概念进行了统一,将触发分为了表间触发(标准的触发设置,即原来的触发、联动、回写)和单表触发,原人员、会议、DEE等在CAP4中都是属于单表触发的分支。因此,自定义触发的设置入口放在单表触发设置中,具体入口:应用定制平台/设计中心/具体业务包/单表触发+号,如图:
其次,根据cap3的自定义触发的规则,分为了无设置界面自定义触发和有设置界面自定义触发。无设置界面自定义触发表示不需要有具体动作设置,仅有一个动作类型的选择,有设置界面自定义触发表示需要进行具体的动作设置,进行一些业务规则的前端设置。
二、自定义触发设置代码结果
─seeyon
├─xxx
│ └─FormTriggerCustomTest1DesignManagerjava
│ └─FormTriggerCustomTest2DesignManagerjava
└─WEB-INF
├─cfgHome
│ └─xxx
│ └─spring
│ spring-test-manager.xml
├─jsp
│ └─xxx
│ └─customerTriggerTest2.jsp
三、代码示例
1、设置态
FormTriggerCustomDesignManager 自定义触发设置抽象父类 FormTriggerCustomTest1DesignManager 无界面自定义触发示例 FormTriggerCustomTest2DesignManager 有界面自定义触发示例
其中,父类方法hasSettingPage和getActionSettingUrl配合使用,只有hasSettingPage为true时,其getActionSettingUrl方法返回的url才有效。hasSettingPage默认返回false。这两个方法根据需要进行重写。目前hasSettingPage方法暂时没有使用,仅做预留
注意,父类有个默认实现方法checkFieldInActionSet,此方法是去处理修改字段时校验此字段是否参与触发关系设置的。如果业务需要进行校验,重写的时候如果有参与设置,则返回值必须为FormTriggerBean.CheckResultEnum.customerAction.getKey();没有参与,则返回值必须为FormTriggerBean.CheckResultEnum.none.getKey(),不能为其他值,否则修改表单字段后保存会报异常。
另外,如果是有界面自定义触发,则需要在xxxController中增加getActionSettingUrl中指定的页面跳转方法,同时增加对应的jsp,此jsp就是具体的自定义触发动作的设置界面。
无界面自定义触发设置效果:
有界面自定义触发设置效果:
2、运行态
FormTriggerCustomBaseAction 自定义触发运行抽象父类 FormTriggerCustomTest1Action 无界面自定义触发运行类 FormTriggerCustomTest2Action 有界面自定义触发运行类
子类实现父类抽象方法getId()、init()和execute(FormTriggerActionContext context);视情况重写canUse()和预执行方法preExecute,preExecute返回false为预执行不通过,会转到执行队列末尾等待下次执行,返回true表示预执行通过。canUse方法目前暂未使用
在7.0sp3基础上进行客开,有细节的区分
FormTriggerBaseActionManager 触发运行公共抽象父类 FormTriggerCustomTest1Action 无界面自定义触发运行类 FormTriggerCustomTest2Action 有界面自定义触发运行类
子类不再需要实现父类init方法,仅需实现getId和execute方法即可。其余canUse和preExecute方法视业务需求重写,preExecute返回false为预执行不通过,会转到执行队列末尾等待下次执行,返回true表示预执行通过。canUse方法目前暂未使用
注:设置态的子类和运行态的子类java文件都必须在spring文件中进行注册,否则无法使用
快速跳转
← 3.6.7 图标 3.7.2 自定义关联 →