AbstFileProcessor
抽象类,实现对该DC事件的处理器DCPluginProfile
描述这个DC插件,注册到该应用的PluginListener
类(见本文档插件应用 > PluginListener章节)注意:本章节提供的相关接口说明,请以aws-api-doc为主。
开发者可继承这个类完成DC文件处理器的开发。由于抽象类AbstFileProcessor
提供了默认实现,通常不需要做出任何处理。开发者可以根据业务需要重载相关事件。
//DC文件处理事件空实现(父类),开发者可以根据需要覆盖特定方法。如果不干预这些事件,开发者的实现类可以什么都不做
public abstract class AbstFileProcessor implements FileProcessorListener{
/**
* 上传文件执行前准备事件,通常在这里先将文件名更新至业务表,或根据需要对文件名进行重命名
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
* @return 返回false阻止文件上传
*/
public boolean uploadReady(Map<String, Object> param);
/**
* 上传的原始文件已保存到DC,如果该文件正文是需要加密的,在加密前触发,如果不需加密,该事件不触发。通常在这里可以读取文件原文,
* 做全文检索的入库或其他操作
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
*/
public void uploadBeforeEncrypt(Map<String, Object> param);
/**
* 上传文件成功后补偿事件
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
* @return
*/
public void uploadSuccess(Map<String, Object> param);
/**
* 上传文件失败后补偿事件。对应ready(),如在这里将附件名从业务表中移走
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
* @return
*/
public void uploadError(Map<String, Object> param);
/**
* 下载文件前校验事件,通常可在这里做权限或其他校验,将校验不通过信息放入DCMessage
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
* @return 返回false阻止文件下载
*/
public boolean downloadValidate(Map<String, Object> param);
/**
* repositoryName名前缀为!时触发,由Java代码提供的输入流,提供给下载请求
*
* @param param 取key=DCContext,value=DCContext的对象,获取操作DC上下文对象
*/
public InputStream downloadContent(Map<String, Object> param) throws Exception;
/**
* 附件下载结束触发
*/
public void downloadComplete(Map<String, Object> param);
}
由DCPluginProfile
类完成向AWS PaaS的注册。
//注册DC
list.add(new DCPluginProfile(repositoryName, clazz, desc, isCommon));
repositoryName
-DC根目录
(文件仓库根目录名),建议使用英文字母和数字命名(区分大小写),不建议使用中文、怪字符和空格等clazz
-实现类路径,如com.abc.crm.dc.MyFileProcessor
desc
-说明isCommon
-是否允许被其他应用访问(全局DC)。除非必要,建议为false。如果设置为true,repositoryName
命名不允许与另外一个全局DC名称相同DC根目录命名规范
repositoryName
是一个不存在的虚拟目录%gDeep%/%groupValue%/%fDeep%/%fileValue%/
开发建议
uploadReady()
,调用DCContext.setFileName()
uploadSuccess()
里直接进行,这是个回调设计tmp
这个全局DC
DC根目录
名一旦被生产环境使用,将不允许再修改