# 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文件中进行注册,否则无法使用

创建人:yinyanting