1、
2、jsp
发布新流程 jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>流程定义文件上传</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/css/default.css">
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
type="text/javascript"></script>
</head>
<body>
<s:form action="processDefinitionAction_deploy" theme="simple" method="post" enctype="multipart/form-data" id="uploadForm">
<table class="table-edit" width="100%" >
<tr class="title"><td colspan="2">发布新流程</td></tr>
<tr>
<td width="200">浏览流程定义zip压缩文件</td>
<td>
<input type="file" name="zipfile" />
</td>
</tr>
<tr>
<td colspan="2">
<a id="btn" href="javascript:$('#uploadForm').submit();" class="easyui-linkbutton" data-options="iconCls:'icon-save'">发布新流程</a>
</td>
</tr>
</table>
</s:form>
</body>
</html>
列表显示jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>流程定义列表</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/css/default.css">
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("#grid").datagrid({
striped : true,
rownumbers : true,
singleSelect : true,
fitColumns : true,
toolbar : [
{
id : 'deploy',
text : '发布新流程',
iconCls : 'icon-add',
handler : function(){
location.href = "${pageContext.request.contextPath}/page_workflow_processdefinition_deploy.action";
}
}
]
});
});
</script>
</head>
<body class="easyui-layout">
<div region="center" >
<table id="grid" class="easyui-datagrid">
<thead>
<tr>
<th data-options="field:'id'" width="120">流程编号</th>
<th data-options="field:'name'" width="200">流程名称</th>
<th data-options="field:'key'" width="100">流程key</th>
<th data-options="field:'version'" width="80">版本号</th>
<th data-options="field:'viewpng'" width="200">查看流程图</th>
</tr>
</thead>
<tbody>
<s:iterator value="list" var="processDefinition">
<!-- 在循环过程中 ,将 processDefinition 对象,同时放入 root 和 map 中-->
<tr>
<td>
<s:property value="id"/> <!-- 从root找 -->
<s:property value="#processDefinition.id"/> <!-- 从map找 -->
</td>
<td><s:property value="name"/></td>
<td><s:property value="key"/></td>
<td><s:property value="version"/></td>
<td>
<s:a action="processDefinitionAction_viewpng" namespace="/" cssClass="easyui-linkbutton" data-options="iconCls:'icon-search'">查看流程图
<s:param name="id" value="id"></s:param>
</s:a>
</td>
</tr>
</s:iterator>
</tbody>
</table>
</div>
</body>
</html>
3、action
package com.dong.bos.web.action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.DeploymentBuilder; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinitionQuery; import org.springframework.beans.factory.annotation.Autowired; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.List; import java.util.zip.ZipInputStream; public class ProcessDefinitionAction extends ActionSupport { private File zipfile; @Autowired private RepositoryService repositoryService; public void setZipfile(File zipfile) { this.zipfile = zipfile; } private List<ProcessDefinition> list; public List<ProcessDefinition> getList() { return list; } public String deploy() throws FileNotFoundException { DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); deploymentBuilder.addZipInputStream(new ZipInputStream(new FileInputStream(zipfile))); deploymentBuilder.deploy(); ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); list = processDefinitionQuery.list(); return "list"; } public String list() { ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); list = processDefinitionQuery.list(); //ActionContext.getContext().getValueStack().set("list",processDefinitions); 第一种:放到值栈中 return "list"; } }