1. 表单触发接口

通过配置+接口实现方式,在表单满足特定条件时触发自定义动作。

1.1. 适用场景

表单触发接口:表单流程在不同触发条件(流程结束,核定节点通过,首次条件满足时)下,可以完成指定的动作(如:触发流程,发送消息,创建会议,创建人员,创建任务等)。

某律师事务所,采用协同对案件是否承接进行审批,审批后,以该案件作为项目单元进行管理,包括文档、人员、协同、会议等等

表单管理员:在表单《案件承接审批单》设置-触发设置中,选择 核定/其它通过后动作为:创建项目。

img

img

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 ...
}

results matching ""

    No results matching ""