bpmn 文件 服务器部署,Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型...

开发文件上传,部署流程模板。

首先,开发jsp页面,deploy.jsp

${RETURN_MESSAGE}


其中,上传form的action为portlet:actionURL,它的name就是在portlet类中的方法名,即deployUploadAction

接下来开发action代码

对应的上传处理代码段deployUploadAction:

public void deployUploadAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception{

UploadPortletRequest upr = PortalUtil.getUploadPortletRequest(actionRequest);

String fileFieldName = "file";

if (upr.getSize(fileFieldName) == 0)

{

throw new Exception("空文件!");

}

String fileName = upr.getFileName(fileFieldName);

try {

// 得到输入流(字节流)对象

InputStream fileInputStream = upr.getFileAsStream(fileFieldName);//file.getInputStream();

// 文件的扩展名

String extension = FilenameUtils.getExtension(fileName);

// zip或者bar类型的文件用ZipInputStream方式部署

DeploymentBuilder deployment = repositoryService.createDeployment();

if (extension.equals("zip") || extension.equals("bar")) {

ZipInputStream zip = new ZipInputStream(fileInputStream);

deployment.addZipInputStream(zip);

} else if (extension.equals("xml")){

// xml类型的文件

deployment.addInputStream(fileName, fileInputStream);

}

deployment.deploy();

_log.info(fileName +" deploy success!");

} catch (Exception e) {

_log.error(fileName + " error on deploy process, because of file input stream");

}

String message = "BPMN file upload success!";

actionRequest.setAttribute("RETURN_MESSAGE", message);

}

运行界面:

首页,一开始有7个流程模型。

fcc7257a63b29ceacaffbbac43aaf79a.png

上传xml文件,同时也支持zip、bar文件

180b0a6a304adef68d4afa7a4c792565.png

上传成功,部署模板后,发现多出了一个。

53c3cd75cefd7a2c99638c30d4b290b3.png

程序调试日志

22d9c3ba5bebcf1753a27e050ab1ffc6.png

Activiti的集成开发系列文章集合在这里:

http://www.cnblogs.com/starcrm/p/6047486.html

方便索引。

全部工程源代码下载

Liferay7 BPM门户开发之44: 集成Activiti展示流程列表

处理依赖关系 集成Activiti之前,必须搞清楚其中的依赖关系,才能在Gradle里进行配置. 依赖关系: 例如,其中activiti-engine依赖于activiti-bpmn-converte ...

Liferay7 BPM门户开发之26: 集成Activiti到Liferay7

开发顺序: 实战任务1,开发BPM管理后台(用于在Liferay管理中心管理Activiti模型上传) 一个熟悉Portlet操作的项目,为开发打好基础. http://www.cnblogs.com ...

Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步

在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户.组的同步需求非常重要,用来实现签收组的概念,比如指定签收组.会签.抢签都需要用到. Activiti可以通过自 ...

Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动

首先增加两个Portlet,分别用于待办处理.流程启动.待办是别人发起的流程,流到自己这里的流程:流程启动用于发起新的流程. 程序文件放置于 在ACtivit中待办概念分两种,1是指派给你的,专门的指 ...

Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发

hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为 ...

Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)

开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...

Liferay7 BPM门户开发之17: Portlet 生命周期

Portlet 生命周期 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy() ...

Liferay7 BPM门户开发之12:acitiviti和liferay用户权限体系集成

写到第12章才出现Liferay的内容,希望可以厚积薄发. 我们的目标是不使用不维护Activiti的用户组织架构,只维护Liferay的体系,这样的好处是非常明显的,即不用做组织架构的同步工作. 原 ...

Liferay7 BPM门户开发之8: Activiti实用问题集合

1.如何实现审核的上级获取(任务逐级审批) 这个是必备功能,通过Spring的注入+Activiti表达式可以很容易解决. 可参考: http://blog.csdn.net/sunxing007/a ...

随机推荐

【krpano】浏览点赞插件(源码+介绍+预览)

简介 最近几天研究了如何在krpano全景的基础上实现记录浏览量和点赞次数,写了一个插件,方便大家使用. 效果截图如下: 每当有用户打开该全景页面时,浏览量会自动加1: 用户可以主动点击点赞按钮,点击 ...

SPSS数据分析—两阶段最小二乘法

传统线性模型的假设之一是因变量之间相互独立,并且如果自变量之间不独立,会产生共线性,对于模型的精度也是会有影响的.虽然完全独立的两个变量是不存在的,但是我们在分析中也可以使用一些手段尽量减小这些问题产 ...

PHP实现简易blog

最近,有时间看了点PHP的代码.参考PHP100教程做了简单的blog,网易云课堂2012年的教程,需要的可以找一下,这里面简单的记录一下. 首先是集成环境,这里选用的WAMP:http://www. ...

Atitit.android js 的键盘按键检测Back键Home键和Menu键事件

Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...

任意List 和DatabTable的转换

public static IEnumerable ToEntityList(this DataTable table) where T : class      ...

重温WCF之消息拦截与篡改(八)

我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过借 ...

Android UI-开源框架ImageLoader的完美例子

Android开源框架ImageLoader的完美例子 2013年8月19日开源框架之Universal_Image_Loader学习 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片, ...

What Influences Method Call Performance in Java?--reference

reference from:https://www.voxxed.com/blog/2015/02/too-fast-too-megamorphic-what-influences-method-c ...

excel下拉级联的做法

前面的文章讲了,excel下拉级联,重新选第一个下拉,后面那个值怎么清除.今天我讲下excel利用宏解决整个表格的级联下拉问题. 我遇到的情况是两个下垃圾连,第一个医生类别,第二个医生职称,而且我是要 ...

C语言第五次博客作业

一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1) 首先先定义narcissistic函数. (2)定义四个整形变量n,a,d,cnt,sum, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值