1. 表单触发接口
通过配置+接口实现方式,在表单满足特定条件时触发自定义动作。
1.1. 适用场景
表单触发接口:表单流程在不同触发条件(流程结束,核定节点通过,首次条件满足时)下,可以完成指定的动作(如:触发流程,发送消息,创建会议,创建人员,创建任务等)。
某律师事务所,采用协同对案件是否承接进行审批,审批后,以该案件作为项目单元进行管理,包括文档、人员、协同、会议等等
表单管理员:在表单《案件承接审批单》设置-触发设置中,选择 核定/其它通过后动作为:创建项目。
1.2. 开发步骤
您需要编写两个Java类,并在Spring的xml文件中注册。
1 动作基本信息
定义了动作的名称,比如创建项目、创建人员;
指定了动作的配置页面,如上图中显示项目名称、项目成员等的ConfigPage;
关联动作执行类。
2 动作执行类
定义触发以后的动作,比如根据前台传递的项目名称、成员、开始时间、结束时间等调用创建项目的方法。
另外再实现一个动作配置页面,该页面将在表单管理员选择动作后以iframe形式嵌入显示在下方。
1.2.1. 定义动作基本信息
示例:
public MyFormTriggerActionDesignManager extends com.seeyon.ctp.form.modules.trigger.FormTriggerActionDesignManager {
public String getId(){
return "xxxxxxx";
}
public String geti18nName(){java
return "xxx.project.new";// 新建项目
}
public String configPageURL(){
return "/form/triggerDesign.do?method=messageConfig";
}
public boolean canUse4FormType(FormType type){
return true;
}
public boolean canUse(){
return true;
}
public abstract String getActionTypeManagerName(){
return "myActionTypeManager";
}
}
Spring配置:
<beans default-autowire="byName">
<bean class="MyFormTriggerActionDesignManager />
</beans>
接口说明:
public abstract class FormTriggerActionDesignManager {
/**
* 获取触发动作唯一标识,很重要
* @return
*/
public abstract String getId();
/**
* 获取触发动作的序号
* @return
*/
public abstract Integer getSort();
/**
* 获取动作执行的名字的国际化key
* @return
*/
public abstract String geti18nName();
/**
* 取得配置页面的URL,相对路径,如:/form/triggerDesign.do?method=messageConfig
* 该页面必须提供两个JS方法:
* function init(configValue){...}
* function OK(){... return configValue}
* @return
*/
public abstract String configPageURL();
/**
* 根据传入的表单分类判断该动作是否可用
* @param type
* @return
*/
public abstract boolean canUse4FormType(FormType type); public abstract boolean canUse4FormType(FormType type);
/**
* 判断当前动作是否可以被使用,默认只判断是否需要高级表单插件
* 用于后续扩展使用
* @return
*/
public abstract boolean canUse();
/**
* 获取动作对应执行类的spring ID
* @return
*/
public abstract String getActionTypeManagerName();
}
1.2.2. 实现动作执行类
public MyActionTypeManager extends com.seeyon.ctp.form.modules.trigger.FormTriggerActionTypeManager {
public void execute(TriggerActionContext contxt) throws BusinessException{
...
}
}
Spring配置
<beans default-autowire="byName">
<bean id="myActionTypeManager" class="MyActionTypeManager />
</beans>
接口说明
public abstract class FormTriggerActionTypeManager {
/**正文组件**/
protected abstract void execute(TriggerActionContext contxt) throws BusinessException;
}
入参Pojo:TriggerActionContext
/**协同正文(如果是流程的话)**/
protected CtpContentAll contentAll;
/**数据记录**/
protected FormDataMasterBean masterBean;
/**是否是时间调度触发**/
protected boolean isTime;
/**触发记录模板**/
protected FormTriggerRecord record;
/**触发设置bean**/
protected FormTriggerBean triggerBean;
/**触发动作bean**/
protected FormTriggerActionBean actionBean;
/**触发条件bean**/
protected FormTriggerConditionBean formConditionBean;
protected FormTriggerConditionBean dateConditionBean;
/**触发源表单*/
protected FormBean formBean;
/**触发源表单*/
protected FormBean formBean;
/**表单管理配置值,对应ConfigPage的值*/
protected String configValue;
/** 重复表触发时间,当前重复表的Id,格式为“重复表名|行数据Id1,行数据Id2” **/
protected String Date_SubDataIds;
1.2.3. 实现配置页面
ConfigPage页面规范
/**
*修改配置时,系统会自动把上次存储的配置值(字符串),返还给你,具体填充到form自行负责
*/
function init(config){
......
}
/**
*将配置值自行拼接成字符串返回给表单,表单负责存储,具体格式没有要求,自行决定
* @return string
*/
function OK(){
return ...
}