開發文件上傳,部署流程模板。
首先,開發jsp頁面,deploy.jsp
<%@ include file="/init.jsp" %> <h3>${RETURN_MESSAGE}</h3> <h2><liferay-ui:message key="Deploy"/></h2> <portlet:actionURL var="uploadURL" name="deployUploadAction"> <portlet:param name="mvcRenderCommandName" value="/deployUploadAction" /> </portlet:actionURL> <form action="${uploadURL }" method="post" enctype="multipart/form-data" style="margin-top:1em;"> <input type="file" name="file" /><br> <input type="submit" value="Upload Model" class="btn" /> </form> <hr class="soften" />
其中,上傳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個流程模型。
上傳xml文件,同時也支持zip、bar文件
上傳成功,部署模板后,發現多出了一個。
程序調試日志
Activiti的集成開發系列文章集合在這里:
http://www.cnblogs.com/starcrm/p/6047486.html
方便索引。
全部工程源代碼下載