This commit is contained in:
hanjian
2024-08-14 15:17:51 +08:00
parent 20a221c1a2
commit b610f94b2e
3483 changed files with 650965 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
<%@page
import="com.blueland.bpm.engine.core.model.ProcessDefinitionModel"%>
<%@page import="com.blueland.bpm.engine.config.model.ProcessInfoConfig"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>流程历史对比</title>
<%@ include file="/commons/meta.jsp"%>
<link rel="stylesheet" type="text/css" href="${ctx}/resource/js/plugins/diff/app/bpmnio.css">
<link rel="stylesheet" type="text/css" href="${ctx}/resource/js/plugins/diff/assets/diff.css">
<link rel="stylesheet" type="text/css" href="${ctx}/resource/js/plugins/diff/app/app.css">
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="content">
<textarea name="xmlOld" rows="5" cols="20" style="display:none" id="xmlOld">
${xmlOld}
</textarea>
<textarea name="xmlNew" rows="5" cols="20" style="display:none" id="xmlNew">
${xmlNew}
</textarea>
<div class="di-container left drop-zone" target="left">
<div class="panel panel-primary">
<div class="panel-heading">
<h8>${nameOld}</h8>
</div>
</div>
<div class="canvas" id="canvas-left"></div>
</div>
<div class="di-container right drop-zone" target="right">
<div class="panel panel-primary">
<div class="panel-heading">
<h8>${nameNew}</h8>
</div>
</div>
<div class="canvas" id="canvas-right"></div>
</div>
<div id="changes-overview" class="collapsed">
<div class="io-control show-hide-toggle">对比详情</div>
<div class="io-control changes"></div>
</div>
</div>
<!-- viewer -->
<script type='text/javascript'src="${ctx}/resource/js/plugins/diff/app/bpmn-viewer.js"></script>
<!-- app -->
<script type='text/javascript' src="${ctx}/resource/js/plugins/diff/app/app.js"></script>
<script type="text/javascript">
$(function(){
getXmlContent();
})
function getXmlContent(){
openDiagram($("#xmlOld").val(),"left");
openDiagram($("#xmlNew").val(),"right");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,177 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程设置</title>
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<script>
function changeHref(id, srcStr) {
var currentId = $(".active").find("a").attr("id");
var isChange = $("#isChange").val();
var isRedirect = true;//是否跳转页面
if("UserContract"==currentId){//当前是基础配置,点击别的菜单会出现提示是否保存的按钮
if("1"==isChange){//内容有更改
//提示是否保存前面的操作
if(confirm("是否保存当前数据?")){
document.getElementById(id).contentWindow.save();
isRedirect = false;//当选择确认保存后 留在当前页面
$("#"+currentId).parent().addClass("active");
}else{
$("#isChange").val("0");//保存完毕后把是否已修改还原成未修改
}
}
}
//if(isRedirect){
//返回时跳转步数+1
var backSteps = $("#backSteps").val();
$("#backSteps").val(parseInt(backSteps)+1);
document.getElementById(id).src = srcStr;
//}
//$("#myTab3").find('li').removeClass("active");
}
function iframeHeight(down){
var height = "";
var imgHeight = $("#imgHeight").val();
if(imgHeight==""){
height = $("#"+down).contents().find("body").height();
}else{
height = imgHeight;
}
$("#"+down).height(height+20);
}
function gobacktolist(){
var isRedirect = true;//是否跳转页面
var isChange = $("#isChange").val();
if("1"==isChange){//内容有更改
//提示是否保存前面的操作
if(confirm("是否保存当前数据?")){
document.getElementById(id).contentWindow.save();
isRedirect = false;//当选择确认保存后 留在当前页面
}else{
$("#isChange").val("0");//保存完毕后把是否已修改还原成未修改
}
}
document.getElementById(id).src = srcStr;
}
function goback(){
var backSteps = $("#backSteps").val();
history.go(-parseInt(backSteps));
}
function publishProcess(url){
postAjax(url,'发布成功!',false,true);
}
</script>
</head>
<body>
<input type="hidden" id="imgHeight" value=""/>
<input type="hidden" id="backSteps" value="1"/>
<div class="main-container" id="main-container">
<%--<div class="panel-heading" style="background: #F5F5F5;color: #333;border: 0 !important;padding: 10px 20px;">
<span style="font-size: 14px;">流程名称:${processDefinition.procDefName}</span>
</div> --%>
<div class="row" style="margin-right:0;">
<div class="col-xs-12">
<div class="tabbable">
<input type="hidden" id="isChange" value="0"/>
<ul class="nav nav-tabs padding-12 tab-color-blue background-blue"
id="myTab3">
<li class="active"><a id="UserContract" data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/processInfo/edit.do?userId=${model.userId}&procDefId=${processDefinition.procDefId }');"
href="" target="frmrightChild" class="current">基础配置</a></li>
<li><a id="UserEvent" href=""
data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/activityInfo/actSet.do?processDefId=${processDefinition.procDefId }&appId=${sys}&mAppId=${mAppId}');"
target="frmrightChild">环节配置</a></li>
<!--
<li><a id="UserEvent" href="" data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/activityInfo/list.do?processDefId=${processDefinition.procDefId }');"
target="frmrightChild">环节配置(列表)</a></li>
-->
<c:if test="${customSso != '1'}">
<li><a id="UserEducation" href="" data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/dataObjectRelation/processList.do?processDefId=${processDefinition.procDefId }')"
target="frmrightChild">扩展属性配置</a></li>
<li>
</c:if>
<li><a id="UserPersonn" href="" data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/actInfo/setActResource/setAllResourcelist.do?processDefId=${processDefinition.procDefId}')"
target="frmrightChild">环节人员配置</a></li>
<li>
<!--
<li><a id="NoticeRemind" href="" data-toggle="tab"
onclick="changeHref('frmrightChild','${ctx}/noticeRemindConfig/edit.do?procDefId=${processDefinition.procDefId}')"
target="frmrightChild">通知提醒规则配置</a></li>
<li> -->
<%-- <li>--%>
<!-- <button type="button"
class="btn btn-success" style="padding: 3px 3px 3px 0px;"
data-toggle="dropdown"
onclick="art.dialog.close();">
发布流程
</button> -->
<%-- <a id="UserPersonn" href="" data-toggle="tab"--%>
<%-- style="background-color: #87B97F;"--%>
<%-- onclick="publishProcess('${ctx}/procDefMgr/releaseProcess.do?procDefId=${processDefinition.procDefId}');"--%>
<%-- target="frmrightChild"> <i class="ace-icon fa fa-check-square-o bigger-110"></i>发布流程</a>--%>
<%-- </li>--%>
<li class="right-btn">
<button class="btn btn-sm bigger btn-yellow dropdown-toggle"
data-toggle="dropdown"
type="button"
onclick="publishProcess('${ctx}/procDefMgr/releaseProcess.do?procDefId=${processDefinition.procDefId}');">
<i class="ace-icon fa fa-check-square-o bigger-110"></i>
发布流程
</button>
<c:choose>
<c:when test="${not empty isSubProcess}">
<button class="btn btn-sm bigger btn-yellow dropdown-toggle"
data-toggle="dropdown" type="button"
onclick="art.dialog.close();">
<i class="ace-icon fa fa-arrow-left"></i>关闭
</button>
</c:when>
<c:otherwise>
<button class="btn btn-sm bigger btn-yellow dropdown-toggle"
data-toggle="dropdown" type="submit"
onclick="window.location='${ctx}/procDefMgr/list.do?${queryParams}';">
<i class="ace-icon fa fa-arrow-left"></i>返回
</button>
</c:otherwise>
</c:choose>
</li>
</ul>
<div class="tab-content" style="width: 100%; height: 100%;">
<IFRAME style="width: 100%; height: 800px;" scrolling="no"
src="${ctx}/processInfo/edit.do?procDefId=${processDefinition.procDefId }"
frameBorder="0" id="frmrightChild" name="frmrightChild"
onload="iframeHeight('frmrightChild')" allowTransparency="true"></IFRAME>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,97 @@
<%@page import="org.activiti.engine.repository.ProcessDefinition"%>
<%@page import="org.activiti.engine.repository.Deployment"%>
<%@page import="com.blueland.bpm.engine.config.model.*"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<title>导入流程模型</title>
<script>
$(document).ready(function() {
$('#file').ace_file_input({
no_file : '请您选择本地BPMN文件 ...',
btn_choose : '选 择',
btn_change : '选 择',
droppable : false,
onchange : null,
thumbnail : false
//| true | large
//whitelist:'gif|png|jpg|jpeg'
//blacklist:'exe|php'
//onchange:''
//
});
var flashSuccess = $("#flashSuccess").attr("value");
if (flashSuccess == "导入成功!") {
alert(flashSuccess);
art.dialog.opener.location.reload();
art.dialog.close();
} else {
if (flashSuccess != "") {
alert(flashSuccess);
}
//bindMask();
}
});
function onSubmit() {
if ($("#file").val() == "" || $("#file").val().length == 0) {
//unBindMask();
alert("请您选择本地文件!");
return false;
}
if(confirm("您确认导入流程吗?")){
setMask("main-container");
document.getElementById("deployFieldForm").submit();
}
}
</script>
</head>
<body>
<%@ include file="/commons/messages.jsp"%>
<div class="main-container" id="main-container">
<div class="widget-box">
<div class="widget-body">
<div class="widget-main no-padding">
<form id="deployFieldForm" name="deployFieldForm" action="${ctx}/procDefMgr/deploy.do" method="post" enctype="multipart/form-data">
<!-- <legend>Form</legend> -->
<fieldset>
<ol>
<li class="text-success"><b>暂只支持导入格式为*.zip、*.bar、*.bpmn\bpmn20.xml的模型文件不支持批量导入。</b></li>
<li class="text-success"><b>导入成功后可在(流程定义->已部署流程定义)菜单中管理该流程。</b></li>
</ol>
<div class="space-18"></div>
<input type="hidden" id="flashSuccess" value="${flashSuccess }" />
<input type="file" id="file" name="file"/>
</fieldset>
<div class="form-actions center">
<input type="button" class="btn btn-sm btn-primary"
id="submitButton" value="导 入" onclick="onSubmit();"/> <input
onclick="art.dialog.close();" type="button"
class="btn btn-sm btn-primary" value="关 闭" />
</div>
</form>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,82 @@
<%@page import="org.activiti.engine.repository.ProcessDefinition"%>
<%@page import="org.activiti.engine.repository.Deployment"%>
<%@page import="com.blueland.bpm.engine.config.model.*" %>
<%@page import="com.blueland.bpm.common.page.*" %>
<%@page import="com.blueland.bpm.common.util.*" %>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>修改流程模型XML</title>
<script type="text/javascript">
$(document).ready(function() {
$("#submitButton").click(function() {
var params = {
procDefId: $('#procDefId').val(),
bpmnXml: $('#bpmnXml').val(),
}
jQuery.ajax({
url: "${ctx}/procDefMgr/updateBpmnFile.do",
data: JSON.stringify(params),
contentType : 'application/json;charset=utf-8', //设置请求头信息
type: "POST",
success: function(resp)
{
alert(resp);
}
});
});
});
</script>
</head>
<body class="white-page">
<%@ include file="/commons/messages.jsp"%>
<form id="updateBpmnFileForm" name="updateBpmnFileForm" action="${ctx}/procDefMgr/updateBpmnFile.do" method="post">
<input id="procDefId" name="procDefId" value="${procDefId }" type="hidden"/>
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div>
<h8>只允许管理员修改 </h8>
</div>
<div class="panel-body">
<table class='table table-bordered' border="0" cellspacing="0"
cellpadding="0" id="myTable">
<textarea name="bpmnXml" id="bpmnXml" style="width:920px;height:470px;">${bpmnXml }</textarea>
</table>
<div class="col-md-offset-1 col-md-9" style="text-align: center;margin-top: 15px">
<button type="button" class="btn btn-sm btn-primary"
id="submitButton">
保存
<i class="ace-icon fa fa-save bigger-110"></i>
</button>
<button onclick="art.dialog.close();" type="button"
class="btn btn-sm btn-primary">
关闭
<i class="ace-icon fa fa-times bigger-110"></i>
</button>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@@ -0,0 +1,138 @@
<%@page import="org.activiti.engine.repository.ProcessDefinition"%>
<%@page import="org.activiti.bpmn.model.*"%>
<%@page import="com.blueland.bpm.engine.config.model.*"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>待办列表</title>
<link href="${ctx_js_plugins}/simpletable/simpletable.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
<script type="text/javascript">
$(document).ready(function() {
});
function createActivityUser(){
var url="${ctx}/setActivityUser/create.do";
showDiaLog(url,"新增环节人员",'800px','600px');
}
function editActivityUser(){
var url="${ctx}/setActivityUser/edit.do";
showDiaLog(url,"修改环节人员",'800px','600px');
}
</script>
</head>
<body>
<%@ include file="/commons/messages.jsp"%>
<form id="procDefForm" name="procDefForm"
action="${ctx}/procDefMgr/list.do" method="post"
style="display: inline;">
<div class="position">
<div class="center">
<div class="left">
<div class="right">
<span>当前位置:流程管理 >> 表单设置</span>
</div>
</div>
</div>
</div>
<div class="box2" style="line-height:70%" panelTitle="全局表单" roller="false">
<table class="tableStyle" formMode="true" footer="normal">
<tr>
<td width="100px">表单URL</td>
<td colspan="7">
<input style="width: 600px" name="processPageUrl" id="processPageUrl" value="" />
</td>
</tr>
</table>
</div>
<div class="box2" style="line-height:70%" panelTitle="环节表单" roller="false">
<table class="tableStyle">
<tr>
<th width="60px">节点名称</th>
<th>跳转类型</th>
<th>环节表单</th>
</tr>
<%
BpmnModel bpmnModel = (BpmnModel) request.getAttribute("bpmnModel");
if (bpmnModel != null) {
List<org.activiti.bpmn.model.Process> processes = bpmnModel
.getProcesses();
for (int i = 0; i < processes.size(); i++) {
org.activiti.bpmn.model.Process process = (org.activiti.bpmn.model.Process) processes
.get(i);
Collection<FlowElement> flowElementList = process
.getFlowElements();
for (FlowElement flowElement : flowElementList) {
if (!UserTask.class.isInstance(flowElement)) {
continue;
}
UserTask userTask = (UserTask) flowElement;
%>
<tr class="<%=((i + 1) % 2 == 0 ? "odd" : "even")%>">
<td><%=userTask.getName()+"("+userTask.getId()+")"%> &nbsp;</td>
<td>
<%
if(userTask.getAssignee()!=null){
userTask.getCandidateUsers().add(userTask.getAssignee());
}
%>
<%if(userTask.getCandidateUsers()!=null&&!userTask.getCandidateUsers().isEmpty()){
%>
用户列表:<%=userTask.getCandidateUsers()%>&nbsp;&nbsp;
<%
}if(userTask.getCandidateOrgs()!=null&&!userTask.getCandidateOrgs().isEmpty()){
%>
组织:<%=userTask.getCandidateOrgs()%>&nbsp;&nbsp;
<%
}if(userTask.getCandidateGroups()!=null&&!userTask.getCandidateGroups().isEmpty()){
%>
角色:<%=userTask.getCandidateGroups()%>
<%
}
%></td>
</tr>
<%
}
}
}
%>
</table>
</div>
<br/>
</form>
</body>
</html>

View File

@@ -0,0 +1,217 @@
<%@page
import="com.blueland.bpm.engine.core.model.ProcessDefinitionModel"%>
<%@page import="com.blueland.bpm.engine.config.model.ProcessInfoConfig"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<%--<title>流程配置</title>--%>
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<link href="${ctx_js_plugins}/simpletable/simpletable.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
<script type="text/javascript">
function changeImage(procDefId){
var url ="${ctx}/procDefMgr/getProcessImageWidthAndHeight.do";
//获取图片的宽高
$.ajax({
url : url,
data:{"procDefId":procDefId},
type : "POST",
dataType: "json",
success : function (data){
var imageWidth=parseInt(data.imageWidth)+20;
var imageHeight=parseInt(data.imageHeight)+30;
$("#processImage").attr("style","padding-left: 30px; display: inline; float: left; margin:20px auto 0;position: relative;background:url('${ctx}/procDefMgr/resource.do?resourceType=image&procDefId="+procDefId
+"') no-repeat;width:"+imageWidth+"px; height:"+
imageHeight+"px;");
$("#versionnumber").text(data.version);
}
});
}
function deleteDeploy(url,procDefId,deploymentId,cascode){
if(window.confirm("删除流程会级联删除该流程定义和运行数据,请谨慎操作!为了避免误操作,在删除操作的同时会要求您导出流程作为备份!")){
var downloadUrl="${ctx}/procDefMgr/exportProcessAllFile.do?resourceType=xml&procDefIds="+procDefId+"&exportall=1";
var winObj = window.open(downloadUrl);
var loop = setInterval(function() {
if(winObj.closed) {
clearInterval(loop);
setMask("main-container");
$.ajax({
url : url,
data:{"procDefId":procDefId,"deploymentId":deploymentId,"cascode":cascode},
type : "POST",
dataType: "json",
success : function (data){
//alert(data);
if(data.success){
alert("删除成功");
var procDefId1 = data.returnProcDefId;
if("" != procDefId1){
$("#procDefId").val(procDefId1);
$("#historyForm").submit();
}else{
var win = art.dialog.open.origin;
$("#procDefForm", win.document).submit();
}
}else{
alert("删除失败,原因是:"+data.reason);
}
}
});
}
}, 3000);
}
}
function exportProcessAllFile(processDefIds){
var url="${ctx}/procDefMgr/exportProcessAllFile.do?resourceType=xml&procDefIds="+processDefIds+"&exportall=1";
window.open(url);
}
function flowVersionCompare(){
var obj=getChooseProcDefId();
if(obj==false){
return;
}
var procDefName = $("#procDefName").val();
var height1 = window.parent.document.documentElement.clientHeight;
var height = (parseInt(height1)-45)+"px";
url ="${ctx}/procDefMgr/compareHistoryModel.do?procDefIdOld="+obj.procDefIdOld+"&procDefIdNew="+obj.procDefIdNew+"&nameOld="+obj.nameOld+"&nameNew="+obj.nameNew;
showFullDiaLog(url,'流程历史版本对比&nbsp;&nbsp;&nbsp;&nbsp;当前流程定义名称:'+procDefName);
}
function getChooseProcDefId(){
var appObj={};
var objOld={};
var objNew={};
var i = 0;
var procDefName = $("#procDefName").val();
var sortList = [];
$("input[name='chooseProcDefId']:checkbox:checked").each(function(item){
var list = $(this).val().split("^");
if(i==0){
objOld.procDefId=list[0];
objOld.name=procDefName+"_"+list[1];
objOld.sort = list[1];
}
if(i==1){
objNew.procDefId=list[0];
objNew.name=procDefName+"_"+list[1];
objNew.sort = list[1];
}
i++;
})
if(i<2){
alert("请选择两个需要对比的流程定义版本号!");
return false;
}else{
if(i>2){
alert("不能同时对比两个以上的历史版本");
return false;
}
}
if(objOld.sort > objNew.sort){
appObj.procDefIdOld=objNew.procDefId;
appObj.nameOld=objNew.name;
appObj.procDefIdNew=objOld.procDefId;
appObj.nameNew=objOld.name;
}else{
appObj.procDefIdOld=objOld.procDefId;
appObj.nameOld=objOld.name;
appObj.procDefIdNew=objNew.procDefId;
appObj.nameNew=objNew.name;
}
return appObj;
}
</script>
</head>
<body class="white-page">
<%@ include file="/commons/messages.jsp"%>
<form id="historyForm" name="historyForm"
action="${ctx}/procDefMgr/getHistoryProcessDefModel.do" method="post"
style="display: inline;">
<input type="hidden" name="procDefId" id="procDefId"/>
<input type="hidden" name="procDefName" id="procDefName" value="${result[0].procDefName}"/>
<div style="margin:5px;">
<button type="button" onclick="flowVersionCompare()" class="btn btn-xs btn btn-primary">流程版本对比<i class="ace-icon fa fa-search-plus bigger-110"></i></button>
</div>
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div class="panel-body" id="panel-body" style="padding:3px;">
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<table id="sample-table-1"
class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th style="width: 25px;"></th>
<th>流程定义版本号</th>
<th>最后更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${result}" var="item"
varStatus="status">
<tr class="${status.count % 2 == 0 ? 'odd' : 'even'}">
<td><input type="checkbox" name="chooseProcDefId" id="chooseProcDefId"
value="${item.procDefId}^${item.version}"></td>
<td><a href="javascript:void(0);" onclick="changeImage('${item.procDefId}');">${item.version}</a></td>
<td><fmt:formatDate value="${item.pdCreateTime}" pattern="yyyy-MM-dd hh:mm:ss"/></td>
<td>
<a href="javascript:void(0);" onclick="deleteDeploy('${ctx}/procDefMgr/history/delete.do','${item.procDefId}','${item.deploymentId}','true');">删除流程</a>&nbsp;&nbsp;
<c:if test="${ebpmAdmin}">
<a href="javascript:void(0)" onclick="showDiaLog('${ctx}/procDefMgr/editProcessFile.do?procDefId=${item.procDefId}','修改流程XML','1024px','600px');">修改流程XML</a>&nbsp;&nbsp;
<a onclick="showDiaLog('${ctx}/procDefMgr/config.do?procDefId=${item.procDefId}','配置','1224px','600px');" href="javascript:void(0);">配置流程</a>
<a href="javascript:void(0)" onclick="exportProcessAllFile('${item.procDefId}');">导出流程</a>&nbsp;&nbsp;
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div id=con >
<span></span>
<ul id=tags>
<li class="selectTag">当前版本<span id="versionnumber">${result[0].version}</span>的流程图如下:</li>
</ul>
<div id=tagContent>
<div class="tagContent selectTag" id="tagContent0" >
<div id="processImage" style="padding-left: 30px; display: inline; float: left; margin:20px auto 0;position: relative;background:url('${ctx}/procDefMgr/resource.do?resourceType=image&procDefId=${result[0].procDefId}') no-repeat;width:${imageWidth+20}px; height:${imageHeight+30}px;">
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@@ -0,0 +1,130 @@
<%@page import="org.activiti.engine.repository.ProcessDefinition"%>
<%@page import="org.activiti.engine.repository.Deployment"%>
<%@page import="com.blueland.bpm.engine.config.model.*"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<base href="<%=basePath%>">
<title>导入流程模型</title>
<script>
$(document).ready(function() {
$('#file').ace_file_input({
no_file : '请您选择本地zip文件 ...',
btn_choose : '选 择',
btn_change : '选 择',
droppable : false,
onchange : null,
thumbnail : false
//| true | large
//whitelist:'gif|png|jpg|jpeg'
//blacklist:'exe|php'
//onchange:''
//
});
var flashSuccess = $("#flashSuccess").attr("value");
//alert(flashSuccess == "导入成功");
//alert(flashSuccess.indexOf("导入成功")!=-1);
if (flashSuccess == "导入成功") {
alert(flashSuccess);
// alert(1);
art.dialog.opener.location.reload();
} else {
if (flashSuccess != "") {
alert(flashSuccess);
}
//bindMask();
}
});
function onSubmit() {
if ($("#file").val() == "" || $("#file").val().length == 0) {
//unBindMask();
alert("请您选择本地文件!");
return false;
}
if(!getFileFormat()){
alert("请上传符合要求的文件!");
return false;
}
//else{
// alert("文件符合要求");
// return false;
//}
if(confirm("您确认导入流程吗?建议导入前导出流程做好备份!")){
setMask("main-container");
document.getElementById("deployFieldForm").submit();
}
}
//判断文件的格式与文件的大小
function getFileFormat(){
//var aa = "*.zip、*.bar、*.bpmn\bpmn20.xml";
var obj = document.getElementById('file');
var fileName = obj.value;
var fileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名
if(fileExt=='.zip' || fileExt=='.bar' || fileExt=='.bpmn' || fileName.indexOf("bpmn20.xml") > 0){
return true;
}else{
return false;
}
}
</script>
</head>
<body class="white-page">
<%@ include file="/commons/messages.jsp"%>
<div class="main-container" id="main-container">
<div class="widget-box">
<div class="widget-body">
<div class="widget-main no-padding">
<form id="deployFieldForm" name="deployFieldForm" action="${ctx}/procDefMgr/importProcessAllFile.do" method="post" enctype="multipart/form-data">
<!-- <legend>Form</legend> -->
<fieldset>
<ol>
<!-- <li class="text-success"><b>暂只支持导入格式为*.zip、*.bar、*.bpmn\bpmn20.xml的模型文件不支持批量导入。</b></li> -->
<li class="text-success"><b>只支持导入格式为*.zip流程文件。</b></li>
<li class="text-success"><b>导入成功后可在(流程定义->已部署流程定义)菜单中管理该流程。</b></li>
<li class="text-success"><b>导入流程包含流程配置、流程模型数据,但不包括角色及角色成员的数据。</b></li>
</ol>
<div class="space-18"></div>
<input type="radio" value="update" name="savetype" checked="checked"/>覆盖版本
<input type="radio" value="create" name="savetype"/>新建版本
<input type="hidden" id="flashSuccess" value="${flashSuccess }" />
<input type="file" id="file" name="file"/>
</fieldset>
<div class="form-actions center">
<button type="button" class="btn btn-sm btn-primary"
id="submitButton" onclick="onSubmit();">
导入
<i class="ace-icon fa fa-cloud-upload bigger-110"></i>
</button>
<button
onclick="art.dialog.close();" type="button"
class="btn btn-sm btn-primary">
关闭
<i class="ace-icon fa fa-times bigger-110"></i>
</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,437 @@
<%@page import="com.blueland.bpm.engine.core.model.ProcessDefinitionModel"%>
<%@page import="com.blueland.bpm.engine.config.model.ProcessInfoConfig"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="com.blueland.bpm.manage.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<jsp:include page="/pages/sysGlType/selectTypeTree.jsp" flush="false" />
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程配置</title>
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css" rel="stylesheet" type="text/css" />
<script type='text/javascript' src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<link href="${ctx_js_plugins}/simpletable/simpletable.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// 分页需要依赖的初始化动作
window.simpleTable = new SimpleTable('procDefForm','${page.thisPageNumber}','${page.pageSize}','${pageRequest.sortColumns}');
});
function publishProcess(url){
var pageNumber = ${page.thisPageNumber};
postAjax(url,'发布成功!',true,true,"procDefForm",pageNumber);
}
function converToModel(url){
postAjax(url,'操作成功!',false,true);
}
function deleteDeploy(url){
if(window.confirm("您确定删除流程定义及运行时的数据吗?")){
setMask("main-container");
$("#procDefForm").attr("action",url);
document.getElementById("procDefForm").submit();
}
}
function importProcessBpmnXml(){
var url="${ctx}/pages/procDefMgr/deployProcessFile.jsp";
showDiaLog(url,"导入流程模型",'600px','320px');
}
function importProcessConfigData(){
var url="${ctx}/pages/procDefMgr/importProcessConfigData.jsp";
showDiaLog(url,"导入流程",'600px','320px');
}
function getItemsProcDefId(){
var chk_value =[];
var procDefId="";
$("input[name='items']:checkbox:checked").each(function(){
chk_value.push($(this).val().split("^")[0]);
})
if(chk_value.length==0){
alert("请选择一项流程定义数据!");
}else{
if(chk_value.length>1){
alert("不能同时查看多条记录的流程图!");
return false;
}
var items=chk_value[0].split("=");
for(var i=0;i<items.length;i++){
if(items[0]=="processDefinitionId"){
procDefId=items[1];
}
}
}
return procDefId;
}
function exportProcessImage(){
var procDefId=getItemsProcDefId();
if(procDefId==""){
return;
}
var url="${ctx}/procDefMgr/viewImage.do?procDefId="+procDefId;
showDiaLogList(url,'流程图');
}
function editProcess(processDefId,processStartIsshow){
//if(processStartIsshow=="RELEASE"&&window.confirm("此流程为发布状态,点击配置后流程将处于未发布状态,您确定配置流程吗?")){
/* jQuery.ajax({
type: "POST",
url: "${ctx}/procDefMgr/unReleaseProcess.do",
data: {procDefId:processDefId},
success: function(resp)
{
//alert(resp);
}
}); */
//}
//序列化表单 保存查询条件页码则直接加在url之后在后台存入session中
var queryparams = $("#procDefForm").serialize();
window.location.href="${ctx}/procDefMgr/config.do?procDefId="+processDefId+"&"+queryparams+"&pageNumber="+${page.thisPageNumber};
}
function exportProcessAllFile(isall){
//判断是否选中全选
var url = "";
//if("checked"==checkbox){//全选
if("0"==isall){//全选
var totalCount = "${page.totalCount}";
if("0"==totalCount){
alert("当前没有符合要求的数据!!");
return;
}else{
url="${ctx}/procDefMgr/exportProcessAllFile.do?resourceType=xml&exportall=0";
}
}else{//非全选
var processDefIds = getItemsProcDefIds();
if(""==processDefIds){
return;
}
url="${ctx}/procDefMgr/exportProcessAllFile.do?resourceType=xml&procDefIds="+processDefIds+"&exportall=1";
}
window.open(url);
}
//获取选中的所有流程定义id值,返回的流程定义id数组
function getItemsProcDefIds(){
var chk_value =[];
var procDefIds=new Array();
$("input[name='items']:checkbox:checked").each(function(){
chk_value.push($(this).val().split("^")[0]);
});
if(chk_value.length==0){
alert("请选择流程定义数据!");
}else{
for(var n=0;n<chk_value.length;n++){
var items=chk_value[n].split("=");
if(items[0]=="processDefinitionId"){
procDefIds.push(items[1]);
}
}
}
return procDefIds;
}
function viewFlowFile(fileId){
var url = "<%=MyContants.BPM_FRONT_PATH%>"+"/ebpm-bpa-front/#/detail?fileId="+fileId+"&type=.bpmn&isMenu=false";
//window.open(url);
showDiaLog(url,'查看流程梳理-业务流程资产','1024px','600px');
}
function processTypeNameOnDbClick(name, value) {
$("#processTypeName").val(name);
$("#processTypeId").val(value);
}
//流程设计
function addBpmnModel(){
var obj=getItemsInfo();
if(!obj.flag){
return;
}
var url = "<%=MyContants.BPM_PROCESS_MODELER_PATH%>"+"#/bpmnModel?appId="+$("#appId").val()+"&procDefKey="+obj.procDefKey;
window.open (url,'流程建模','width='+(window.screen.availWidth-10)+',height='+(window.screen.availHeight-30)+ ',top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
}
//拼装数据
function getItemsInfo(){
var obj ={
"procDefKey":"",
"flag":false
}
var chk_procDefKey =[];
var chk_procDefName =[];
$("input[name='items']:checkbox:checked").each(function(){
chk_procDefKey.push($(this).val().split("^")[1]);
})
if(chk_procDefKey.length>1){
alert("不能同时设计多个流程!");
return false;
}else if(chk_procDefKey.length==1){
obj.procDefKey = chk_procDefKey[0];
obj.flag=true;
}else if (chk_procDefKey.length==0) {
obj.flag=true;
}
return obj
}
</script>
</head>
<body>
<%@ include file="/commons/messages.jsp"%>
<form id="procDefForm" name="procDefForm"
action="${ctx}/procDefMgr/list.do" method="post"
style="display: inline;">
<input type="hidden" name="appId" id ="appId" value="<%=session.getAttribute("app_id")%>"/>
<input type="hidden" id="flag" name="flag" value="${flag}"/>
<!-- <input value="${query.processTypeId}" id="processTypeId"
name="processTypeId" maxlength="30" type="hidden" /> -->
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div class="panel-heading">
<%--<h8>流程配置</h8>--%>
</div>
<div class="panel-body" id="panel-body" style="padding:3px;">
<div class="well well-sm" style="margin-bottom: 2px;">
<table border="0" cellspacing="0" cellpadding="0"
class="table-search">
<tr>
<td>流程定义KEY</td>
<td><input value="${query.processDefKey}"
id="processDefKey" name="processDefKey" maxlength="30" /></td>
<td>流程定义名称:</td>
<td><input value="${query.processDefName}"
id="processDefName" name="processDefName" maxlength="30" /></td>
<%--<td>流程类型:</td>
<td>
<!-- <select name="processTypeId">
<option value="">--请选择--</option>
<c:forEach items="${sysGlTypes}" var="item">
<option ${query.processTypeId==item.typeId?"selected":""}
value="${item.typeId}">${item.typeName}</option>
</c:forEach>
</select> -->
<input
<c:choose>
<c:when test="${not empty query.processTypeName}">
value="${query.processTypeName}"
</c:when>
<c:otherwise>
value="请选择"
</c:otherwise>
</c:choose>
name="processTypeName" id="processTypeName" readonly
onclick="showMenu('processTypeName','',''); return false;" />
<input
type="hidden" name="processTypeId" id="processTypeId"
preValue="${query.processTypeId}"
value="${query.processTypeId}" />
&lt;%&ndash; <a class="blue" href="javascript:void(0);"> &ndash;%&gt;
&lt;%&ndash; <i class="ace-icon fa fa-search bigger-130" &ndash;%&gt;
&lt;%&ndash; onclick="showMenu('processTypeName','',''); return false;"/> &ndash;%&gt;
&lt;%&ndash; </i></a>&ndash;%&gt;
</td>--%>
<td>发布状态:</td>
<td><select name="processMgrState">
<option value="">--请选择--</option>
<option ${query.processMgrState=='RELEASE'?"selected":""}
value="RELEASE">已发布</option>
<option ${query.processMgrState=='UPDATE'?"selected":""}
value="UPDATE">修订中</option>
<option ${query.processMgrState=='UNRELEASE'?"selected":""}
value="UNRELEASE">未发布</option>
</select></td>
<td><button type="submit" class="btn btn-xs btn-primary">查&nbsp;&nbsp;询
<i class="ace-icon fa fa-search bigger-110"></i></button></td>
</tr>
<tr>
<%--<td>可见状态:</td>
<td><select name="processStartIsshow">
<option value="">--请选择--</option>
<c:forEach items="${query.processStartIsshowMap}" var="item">
<option ${query.processStartIsshow==item.key?"selected":""}
value="${item.key }">${item.value}</option>
</c:forEach>
</select></td>--%>
<!--
<td>创建时间:</td>
<td><input value="" id="deploymentTime"
name="deploymentTime" maxlength="30"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})" /></td>
-->
</tr>
<tr>
<td colspan="7">
<!--
<button type="button" onclick="importProcessBpmnXml();"
class="btn btn-xs btn-success">导入流程模型</button>
-->
<!-- <button type="button" onclick="importProcessConfigData();"
class="btn btn-xs btn-success">导入流程配置</button> -->
<button type="button" onclick="addBpmnModel()" class="btn btn-xs btn-success">
流程建模<i class="ace-icon fa fa-plus bigger-110"></i>
</button>
<button type="button" onclick="exportProcessImage();"
class="btn btn-xs btn btn-primary">查看流程图
<i class="ace-icon fa fa-search-plus bigger-110"></i></button>
<c:if test="${customSso != '1'}">
<button type="button" onclick="importProcessConfigData();"
class="btn btn-xs btn-success">导入流程
<i class="ace-icon fa fa-cloud-upload bigger-110"></i></button>
<button type="button" onclick="exportProcessAllFile('1');"
class="btn btn-xs btn-yellow">导出选中流程
<i class="ace-icon fa fa-cloud-download bigger-110"></i></button>
<button type="button" onclick="exportProcessAllFile('0');"
class="btn btn-xs btn-danger">导出全部流程
<i class="ace-icon fa fa-cloud-download bigger-110"></i></button>
<a href="${ctx}/procDefMgr/export.do" class="btn btn-xs btn-orange">
导出流程清单 <i class="ace-icon fa fa-cloud-download bigger-110"></i>
</a>
</c:if>
</td>
</tr>
</table>
</div>
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<table id="sample-table-1"
class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th style="width: 25px;">
<!-- <input type="checkbox" id="selectAll"
onclick="setAllCheckboxState('items',this.checked)"> -->
</th>
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
<th style="width: 200px">流程定义KEY</th>
<th style="width: 60px;">版本号</th>
<th sortColumn="procDefName">流程定义名称</th>
<th sortColumn="deployTime" style="width: 150px">创建时间</th>
<th sortColumn="procDefVersion" style="width: 150px;">状态</th>
<th sortColumn="processStartIsshow" style="width: 150px;">是否可见</th>
<th style="width: 70px;">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${page.result}" var="item" varStatus="status">
<tr class="${status.count % 2 == 0 ? 'odd' : 'even'}">
<td ><input type="checkbox" name="items" id="items"
value="processDefinitionId=${item.processDefId}^${fn:split(item.processDefId,":")[0]}"></td>
<td class="td" title="${fn:split(item.processDefId,":")[0]}">${fn:split(item.processDefId,":")[0]}&nbsp;</td>
<td align="center" class="td" title="${fn:split(item.processDefId,":")[1]}">${fn:split(item.processDefId,":")[1]}&nbsp;</td>
<td class="td" title="${item.processDefName}">${item.processDefName}&nbsp;</td>
<td title=""><fmt:formatDate value="${item.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
<td >
<c:choose>
<c:when test="${item.processMgrState=='RELEASE'}">
<span class="label label-success">已发布</span>
</c:when>
<c:when test="${item.processMgrState=='UPDATE'}">
<span class="label label-yellow">修订中</span>
</c:when>
<c:otherwise><span class="label label-danger">未发布</span></c:otherwise>
</c:choose>
</td>
<td align="center">
<c:choose>
<c:when test="${item.processStartIsshow=='Y'}">
可见
</c:when>
<c:otherwise>
不可见
</c:otherwise>
</c:choose>
</td>
<td>
<div class="btn-group">
<button data-toggle="dropdown"
class="btn btn-info btn-sm dropdown-toggle">
配置 <span class="ace-icon fa fa-caret-down icon-on-right"></span>
</button>
<ul
class="dropdown-menu dropdown-info dropdown-menu-right">
<li style="list-style: none;"><a
onclick="publishProcess('${ctx}/procDefMgr/releaseProcess.do?procDefId=${item.processDefId}');"
href="javascript:void(0);">发布流程</a></li>
<li style="list-style: none;"><a
onclick="editProcess('${item.processDefId}','${item.processStartIsshow}')"
href="javascript:void(0);">配置流程</a></li>
<%-- <li style="list-style: none;"><a href="javascript:void(0);"
onclick="converToModel('${ctx}/procDefMgr/convert-to-model.do?procDefId=${item.processDefId}');">转换成模型</a>
</li> --%>
<!--
<li><a
href="${ctx}/procDefMgr/exportProcessAllFile.do?resourceType=xml&procDefId=${item.processDefId}"
target="_blank">导出流程</a></li>
<li>
<li><a
href="${ctx}/procDefMgr/exportProcessResource.do?resourceType=xml&procDefId=${item.processDefId}"
target="_blank">导出流程模型</a></li>
<li><a
href="${ctx}/procDefMgr/exportProcessConfigData.do?procDefId=${item.processDefId}"
target="_blank">导出流程配置</a></li>
-->
<li style="list-style: none;"><a href="javascript:void(0)"
onclick="showDiaLog('${ctx}/procDefMgr/editProcessFile.do?procDefId=${item.processDefId}','修改流程XML','1024px','600px');">修改流程XML</a>
</li>
<li style="list-style: none;"><a href="javascript:void(0)"
onclick="showDiaLog('${ctx}/procDefMgr/getHistoryProcessDefModel.do?procDefId=${item.processDefId}','流程历史版本&nbsp;&nbsp;&nbsp;&nbsp;当前流程定义名称:${item.processDefName}','1024px','600px');">流程历史版本</a>
</li>
<c:if test="${not empty item.arisCode}">
<li style="list-style: none;"><a href="javascript:void(0)"
onclick="viewFlowFile(${item.arisCode})">流程资产</a>
</li>
</c:if>
<!-- <li><a href="javascript:void(0)"
onclick="deleteDeploy('${ctx}/procDefMgr/delete.do?procDefId=${item.processDefId}&deploymentId=${item.deploymentId}&cascode=true');">删除流程</a>
</li> -->
</ul>
</div>
<!-- /.btn-group -->
</td>
</tr>
</c:forEach>
</tbody>
</table>
<simpletable:pageToolbar page="${page}">
</simpletable:pageToolbar>
</div>
<!-- /.table-responsive -->
</div>
<!-- /span -->
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@@ -0,0 +1,276 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程通知提醒规则配置</title>
<link href="${ctx }/resource/js/plugins/loadmask/jquery.loadmask.css"
rel="stylesheet" type="text/css">
<script type="text/javascript"
src="${ctx }/resource/js/plugins/loadmask/jquery.loadmask.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var noticeScopes = '${noticeRemindConfig.noticeScopes}';
var arr = new Array();
arr = noticeScopes.split(',');
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 'QC') {
$('#noticeScopes1').attr("checked", "true");
} else if (arr[i] == 'JB') {
$('#noticeScopes2').attr("checked", "true");
} else if (arr[i] == 'ZD') {
$('#noticeScopes3').attr("checked", "true");
}
}
var inp1 = $('#appManagerNames').get(0);
var inp2 = $('#appManagerIds').get(0);
var inp3 = $('#noticeScopes3').attr('checked');
if (inp3) {
inp1.setAttribute('readonly', 'true');
inp1.removeAttribute('disabled')
inp2.setAttribute('readonly', 'true');
inp2.removeAttribute('disabled')
} else {
inp1.setAttribute('disabled', 'disabled');
inp1.removeAttribute('readonly');
inp2.setAttribute('disabled', 'disabled');
inp2.removeAttribute('readonly');
}
$('#noticeScopes3').on('click', function() {
var inp1 = $('#appManagerNames').get(0);
var inp2 = $('#appManagerIds').get(0);
var inp3 = $('#noticeScopes3').attr('checked');
if (inp3) {
inp1.setAttribute('readonly', 'true');
inp1.removeAttribute('disabled')
inp2.setAttribute('readonly', 'true');
inp2.removeAttribute('disabled')
} else {
inp1.setAttribute('disabled', 'disabled');
inp1.removeAttribute('readonly');
inp2.setAttribute('disabled', 'disabled');
inp2.removeAttribute('readonly');
}
});
var inp4 = $('#activityDefNames').get(0);
var inp5 = $('#activityDefIds').get(0);
var inp6 = $('input:radio[name="noticeType"]:checked').val();
if (inp6 == '2') {
inp4.setAttribute('readonly', 'true');
inp4.removeAttribute('disabled')
inp5.setAttribute('readonly', 'true');
inp5.removeAttribute('disabled')
} else {
inp4.setAttribute('disabled', 'disabled');
inp4.removeAttribute('readonly');
inp5.setAttribute('disabled', 'disabled');
inp5.removeAttribute('readonly');
}
$(':radio').on('click', function() {
var inp4 = $('#activityDefNames').get(0);
var inp5 = $('#activityDefIds').get(0);
var inp6 = $('input:radio[name="noticeType"]:checked').val();
if (inp6 == '2') {
inp4.setAttribute('readonly', 'true');
inp4.removeAttribute('disabled')
inp5.setAttribute('readonly', 'true');
inp5.removeAttribute('disabled')
} else {
inp4.setAttribute('disabled', 'disabled');
inp4.removeAttribute('readonly');
inp5.setAttribute('disabled', 'disabled');
inp5.removeAttribute('readonly');
}
});
$("#submitButton").click(function() {
var noticeDrafters = $('#noticeScopes1').attr('checked');
var noticeOperator = $('#noticeScopes2').attr('checked');
var noticeUser = $('#noticeScopes3').attr('checked');
if (!noticeDrafters && !noticeOperator && !noticeUser) {
alert("提醒用户必选一个");
return false;
}
if (noticeUser) {
var appManagerIds = $("#appManagerIds").val();
if (appManagerIds == null || appManagerIds == '') {
alert("指定用户不能为空");
return false;
}
}
var noticeType = $('input:radio[name="noticeType"]:checked').val();
if (noticeType == null) {
alert("提醒规则必选一个");
return false;
}
if (noticeType == '2') {
var activityDefIds = $('#activityDefIds').val();
if (activityDefIds == null || activityDefIds == '') {
alert("指定环节不能为空");
return false;
}
}
var noticeContent = $.trim($('#noticeContent').val());
if (noticeContent == null || noticeContent == '') {
alert("提醒内容不能为空");
$('#noticeContent').focus();
return false;
}
setMask("main-container");
//用jquery中的ajax方法向服务器提交请求
jQuery.ajax({
type : "POST",
url : "${ctx}/noticeRemindConfig/update.do",
data : $('#myform').serialize(),
success : function(resp) {
alert(resp);
$('#main-container').unmask();
if (resp == '操作成功') {
window.location.reload();
}
}
});
});
//清空
$("#refreshButton").click(function() {
var procDefId = $("#procDefId").val();
var noticeType = '${noticeRemindConfig.noticeType}';
if(noticeType == null || noticeType == ''){
refreshData();
return false;
}
setMask("main-container");
//用jquery中的ajax方法向服务器提交请求
jQuery.ajax({
type : "POST",
url : "${ctx}/noticeRemindConfig/delete.do",
data : {
procDefId : procDefId
},
success : function(resp) {
alert(resp);
$('#main-container').unmask();
window.location.reload();
}
});
});
});
function createActUser(values, names) {
$("#appManagerIds").val(values.replace(/USER#/g, ""));
$("#appManagerNames").val(names);
}
function createActConfig(values, names) {
$("#activityDefIds").val(values);
$("#activityDefNames").val(names);
}
function refreshData(){
$("#appManagerNames").val("");
$("#appManagerIds").val("");
$("#activityDefNames").val("");
$("#activityDefIds").val("");
$("#noticeContent").val("");
$('input:checkbox[name=noticeScopes]').attr('checked', false);
$('input:radio[name=noticeType]').attr('checked',false);
}
</script>
</head>
<body style="font-size: 13px; font-family: 'Open Sans';">
<form action="${ctx}/noticeRemindConfig/update.do" method="post"
id="myform">
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div class="panel-body">
<input type="hidden" id="oldValue" /> <input type="hidden"
id="procDefId" name="procDefId"
value="${noticeRemindConfig.procDefId}" style="width: 200px;" />
<input type="hidden" id="procDefKey" name="procDefKey"
value="${noticeRemindConfig.procDefKey}" style="width: 200px;" />
<table class='table table-bordered' border="0" cellspacing="0"
cellpadding="0" id="myTable">
<!-- 存放隐藏域的区域 -->
<!-- 存放表单的区域 -->
<tr>
<td>提醒用户:</td>
<td colspan="3">
<!-- <div class="checkbox"> --> <label> <input
class="ace input-lg" type="checkbox" name="noticeScopes"
id="noticeScopes1" value="QC" /> <span class="lbl">通知起草人</span>
</label> <label> <input class="ace input-lg" type="checkbox"
name="noticeScopes" id="noticeScopes2" value="JB" /> <span
class="lbl">流程经办人</span>
</label> <label> <input class="ace input-lg" type="checkbox"
name="noticeScopes" id="noticeScopes3" value="ZD" /> <span
class="lbl">指定用户</span>
</label> <input style="width: 400px" type="text" name="noticeUserNames"
id="appManagerNames"
value="${noticeRemindConfig.noticeUserNames }"
disabled="disabled"
onclick="showDiaLog('${ctx}/pages/user_org_select.jsp?showTreeType=USER&isMultiSelect=true&roleFlag=false&orgId=0', '指定用户', '800px', '500px');" />
<input type="hidden" name="noticeUserIds" id="appManagerIds"
disabled="disabled" value="${noticeRemindConfig.noticeUserIds }" />
<!-- </div> -->
</td>
</tr>
<tr>
<td>提醒规则:</td>
<td colspan="3">
<!-- <div class="radio"> --> <label> <input
class="ace input-lg" type="radio" name="noticeType"
id="noticeType1" value="1"
<c:if test="${noticeRemindConfig.noticeType == '1'}">checked="checked"</c:if> />
<span class="lbl">办结提醒</span>
</label> <label> <input class="ace input-lg" type="radio"
name="noticeType" id="noticeType2" value="2"
<c:if test="${noticeRemindConfig.noticeType == '2'}">checked="checked"</c:if> />
<span class="lbl">指定环节提醒</span>
</label> <input style="width: 400px" type="text" name="activityDefNames"
id="activityDefNames"
value="${noticeRemindConfig.activityDefNames }"
disabled="disabled"
onclick="showDiaLog('${ctx}/noticeRemindConfig/selectActInfoConfigs.do?processDefId=${noticeRemindConfig.procDefId}', '选择节点', '800px', '500px');" />
<input type="hidden" name="activityDefIds" id="activityDefIds"
value="${noticeRemindConfig.activityDefIds}" /> <!-- </div> -->
</td>
</tr>
<tr>
<td>提醒内容:</td>
<td colspan="3"><span class="float_left"> <textarea
preValue="${noticeRemindConfig.noticeContent}"
onblur="moveout(this.id);" name="noticeContent"
id="noticeContent" style="width: 800px;">${noticeRemindConfig.noticeContent}</textarea>
</span></td>
</tr>
</table>
<div class="col-md-offset-1 col-md-9" style="text-align: center;">
<button type="button" class="btn btn-sm btn-primary"
id="submitButton" />
保存 <i class="ace-icon fa fa-save bigger-110"></i>
</button>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button type="button" class="btn btn-sm btn-danger"
id="refreshButton" />
重置 <i class="ace-icon glyphicon glyphicon-refresh"></i>
</button>
</div>
</div>
</div>
</div>
</form>
<jsp:include page="../../../pages/sysGlType/selectTypeTree.jsp"
flush="false" />
</body>
</html>

View File

@@ -0,0 +1,108 @@
<%@page import="org.activiti.engine.repository.ProcessDefinition"%>
<%@page import="org.activiti.bpmn.model.*"%>
<%@page import="com.blueland.bpm.engine.config.model.*"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程环节列表</title>
<link href="${ctx_js_plugins}/simpletable/simpletable.css"
type="text/css" rel="stylesheet">
<script type="text/javascript"
src="${ctx_js_plugins}/simpletable/simpletable.js"></script>
<link href="${ctx}/resource/js/plugins/loadmask/jquery.loadmask.css"
rel="stylesheet" type="text/css" />
<script type='text/javascript'
src='${ctx}/resource/js/plugins/loadmask/jquery.loadmask.js'></script>
<script type="text/javascript">
$(document).ready(function() {
$("#submitButton").click(function(){
var retValus='';
var retNames='';
$('input[name="resources"]:checked').each(function(i){
if(i>0){
retValus += ",";
retNames += ",";
}
var trId = $(this).val();
retValus += $(this).val();
retNames += $('#'+trId).attr("dataName");
});
if(retValus == null || retValus == ''){
alert("请选择节点");
return false;
}
art.dialog.opener.createActConfig(retValus,retNames);
art.dialog.close();
});
});
</script>
</head>
<body id="content">
<form id="queryForm" name="queryForm"
action="${ctx}/actInfo/setActResource/list.do" method="post"
style="display: inline;">
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div class="panel-body" style="padding: 3px;">
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<table id="sample-table-1"
class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th style="width: 25px;"><input type="checkbox"
onclick="setAllCheckboxState('resources',this.checked)"></th>
<th>节点ID</th>
<th>节点名称</th>
</tr>
</thead>
<tbody>
<c:forEach items="${actInfoConfigs}" var="item"
varStatus="status">
<tr class="${status.count % 2 == 0 ? 'odd' : 'even'}" id="${item.activityDefId}" dataName="${item.activityDefName}">
<td><input type="checkbox" name="resources"
value="${item.activityDefId}"></td>
<td>${item.activityDefId}</td>
<td>${item.activityDefName}&nbsp;</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="col-md-offset-1 col-md-9" style="text-align: center;">
<button type="button" class="btn btn-sm btn-primary"
id="submitButton" />
确定
<i class="ace-icon fa fa-save bigger-110"></i>
</button>
</div>
</div>
<!-- /.table-responsive -->
</div>
<!-- /span -->
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@@ -0,0 +1,185 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<hred>
<%@ include file="/commons/meta.jsp" %>
<link rel="stylesheet" href="${ctx}/resource/js/plugins/zTree/css/demo.css" type="text/css">
<link rel="stylesheet" href="${ctx}/resource/js/plugins/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.core-3.4.js"></script>
<script type="text/javascript" src="${ctx}/resource/js/plugins/zTree/js/jquery.ztree.excheck-3.4.js"></script>
<SCRIPT type="text/javascript">
var p_inputObj;
var p_initParams1="";
var p_initParams2="";
var p_initParams3="";
var p_initParams4=false;
function createSetting(){
var setting = {
view: {
dblClickExpand: false,
expandSpeed: "slow",
selectedMulti: false
},
data: {
simpleData: {
enable : true,
idKey : "id",
pIdKey : "pId" ,
DIY:"isAccessTopMenu"
}
},async: {
enable: true,
url:"${ctx}/procDefMgr/getProcDefTree.do",
autoParam:["id", "name=n","level=lv"],
otherParam:{"assignTreeId":p_initParams1,"treeLevel":p_initParams2}
},
callback: {
onDblClick: onDblClick
}
};
return setting;
}
function createSettingCheck(){
var setting = {
check: {
enable: true,
chkboxType: {"Y":"", "N":""}
},
view: {
dblClickExpand: false,
expandSpeed: "slow"
},
data: {
simpleData: {
enable : true,
idKey : "id",
pIdKey : "pId" ,
DIY:"isAccessTopMenu"
}
},async: {
enable: true,
url:"${ctx}/procDefMgr/getProcDefTree.do",
autoParam:["id", "name=n","level=lv"],
otherParam:{"assignTreeId":p_initParams1,"treeLevel":p_initParams2}
},
callback: {
beforeClick: beforeClick,
onCheck: onCheck
}
};
return setting;
}
function beforeClick(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("p_treeDept");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
function onCheck(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("p_treeDept"),
nodes = zTree.getCheckedNodes(true),
name = "",
id="";
//nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
if(nodes[i].level<=0||nodes[i].level<=p_initParams3)
continue;
name += nodes[i].name + ",";
id += nodes[i].id + ",";
}
if (id.length > 0 ) id = id.substring(0, id.length-1);
if (name.length > 0 ) name = name.substring(0, name.length-1);
try{
var fun=p_inputObj+"OnDbClick";
eval(fun+"('"+name +"','"+id+"')");
}catch(e){}
}
function onDblClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("p_treeDept"),
nodes = zTree.getSelectedNodes(),
name = "",
id="";
//nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
if(nodes[i].level<=0||nodes[i].level<=p_initParams3)
return;
name += nodes[i].name + ",";
id += nodes[i].id + ",";
}
if (id.length > 0 ) id = id.substring(0, id.length-1);
if (name.length > 0 ) name = name.substring(0, name.length-1);
try{
var fun=p_inputObj+"OnDbClick";
eval(fun+"('"+name +"','"+id+"')");
}catch(e){}
hideMenu();
}
function showMenu(inputName,params1,params2,params3) {
//alert(params2);
p_initParams1=params1;
p_initParams2=params2;
p_initParams3=params3;
$.fn.zTree.init($("#p_treeDept"), createSetting());
p_inputObj=inputName;
var cityObj = $("#"+inputName);
var cityOffset = cityObj.offset();
$("#p_menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function showMenu1(inputName,params1,params2,params3) {
//alert(params2);
p_initParams1=params1;
p_initParams2=params2;
p_initParams3=params3;
$.fn.zTree.init($("#p_treeDept"), createSettingCheck());
p_inputObj=inputName;
var cityObj = $("#"+inputName);
var cityOffset = cityObj.offset();
$("#p_menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function hideMenu() {
$("#p_menuContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "p_menuBtn" || event.target.id == "p_menuContent" || $(event.target).parents("#p_menuContent").length>0)) {
hideMenu();
}
}
$(document).ready(function(){
//
});
</SCRIPT>
</HEAD>
<BODY>
<div id="p_menuContent" class="menuContent" style="z-index:1;display:none; position: absolute;">
<ul id="p_treeDept" class="ztree" style="margin-top:0; width:230px;height: auto;max-height: 300px;"></ul>
</div>
</BODY>
</HTML>

View File

@@ -0,0 +1,306 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>
<%@page import="com.blueland.bpm.manage.util.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程基础配置</title>
<script type="text/javascript">
$(document).ready(function() {
$("#submitButton").click(function() {
//用jquery中的ajax方法向服务器提交请求
jQuery.ajax({
type : "POST",
url : "${ctx}/processInfo/update.do",
data : $('#myform').serialize(),
success : function(resp) {
$("#isChange",window.parent.document).val("0");//保存完毕后把是否已修改还原成未修改
alert(resp);
}
});
});
$('#mprotocol').change(function(){
var val=$(this).children('option:selected').val();
if(val=="http"){
$("#otherSysDealStatus option[value='no']").attr("selected", "selected");
}else{
$("#otherSysDealStatus option[value='yes']").attr("selected", "selected");
}
});
//获取绑定的流程梳理的文件名称
if($("#arisCode").val() != null){
var url = "<%=MyContants.BPM_FILE_PATH%>"+"/ebpm-bpa-web/flow/getAtt?fileId="+$("#arisCode").val();
jQuery.ajax({
url : url,
type : "GET",
success : function(resp) {
$("#arisCodeName").val(resp.NAME);
}
});
}
});
function processTypeNameOnDbClick(name, value) {
//判断流程分类是否修改
moveout("processTypeId");
$("#processTypeName").val(name);
$("#processTypeId").val(value);
}
//焦点移出时对比现在的值和原来的值是否一致 如果不一致则修改父页面的是否修改的标记,标记为已修改
function moveout(id){
//获取父页面是否修改的标记
var isChange = $("#isChange",window.parent.document).val();
if(isChange==0){//如果父页面标记为未修改 则执行下面的操作
var preValue = $("#"+id).attr("preValue");
var value = $("#"+id).val();
if(preValue != value){
//设置标记为已修改
$("#isChange",window.parent.document).val("1");
}
}
}
function save(){
//用jquery中的ajax方法向服务器提交请求
jQuery.ajax({
type : "POST",
async : false,
url : "${ctx}/processInfo/update.do",
data : $('#myform').serialize(),
success : function(resp) {
//设置标记为已修改
$("#isChange",window.parent.document).val("0");//保存完毕后把是否已修改还原成未修改
alert(resp);
}
});
}
function arisCodeNameOnDbClick(name, value) {
$("#arisCodeName").val(name);
$("#arisCode").val(value);
}
function viewFlowFile(){
if($("#arisCode").val() != ""){
var url = "<%=MyContants.BPM_FRONT_PATH%>"+"/ebpm-bpa-front/#/detail?fileId="+$("#arisCode").val()+"&type=.bpmn&isMenu=false";
showDiaLog(url,'查看流程梳理-业务流程资产','1024px','600px');
}else{
alert("请选择流程梳理-业务流程")
}
}
</script>
</head>
<body style="font-size: 13px;font-family: 'Open Sans';" class="white-page">
<form action="${ctx}/processInfo/update.do" method="post"
id="myform">
<div class="main-container" id="main-container">
<div class="panel panel-primary">
<div class="panel-body">
<input type="hidden" id="oldValue"/>
<input type="hidden" id="processDefName" name="processDefName"
value="${processInfoConfig.processDefName}" style="width: 200px;" />
<input type="hidden" id="processDefId" name="processDefId"
value="${processInfoConfig.processDefId}" style="width: 200px;" />
<input type="hidden" id="processDefKey" name="processDefKey"
value="${processInfoConfig.processDefKey}" style="width: 200px;" />
<input type="hidden" id="processMgrState" name="processMgrState"
value="${processInfoConfig.processMgrState}" style="width: 200px;" />
<input type="hidden" id="processModelSyncState" name="processModelSyncState"
value="${processInfoConfig.processModelSyncState}" style="width: 200px;" />
<table class='table table-bordered form-table' border="0" cellspacing="0"
cellpadding="0" id="myTable">
<!-- 存放隐藏域的区域 -->
<!-- 存放表单的区域 -->
<tr>
<td>流程KEY</td>
<td>${processInfoConfig.processDefKey}</td>
<td>流程ID</td>
<td>${processInfoConfig.processDefId}</td>
</tr>
<tr>
<td>流程名称:</td>
<td>${processInfoConfig.processDefName}</td>
<td>流程版本号:</td>
<td>${processInfoConfig.processVersion}</td>
</tr>
<tr>
<td>流程类型:</td>
<td style="width: 250px;">
<input type="text"
<c:choose>
<c:when test="${not empty processInfoConfig.processTypeName}">
value="${processInfoConfig.processTypeName}"
</c:when>
<c:otherwise>
value="请选择"
</c:otherwise>
</c:choose>
name="processTypeName" id="processTypeName" readonly
onclick="showMenu('processTypeName','',''); return false;" />
<input
type="hidden" name="processTypeId" id="processTypeId"
value="${processInfoConfig.processTypeId}" />
<a class="blue" href="javascript:void(0);">
<i class="ace-icon fa fa-search bigger-130"
onclick="showMenu('processTypeName','',''); return false;"/>
</i></a>
</td>
<td>流程是否可见:</td>
<td>
<select name="processStartIsshow" id="processStartIsshow"
preValue="${processInfoConfig.processStartIsshow}"
onchange="moveout(this.id);">
<option value="Y" ${processInfoConfig.processStartIsshow=="Y"?"selected":""}>可见</option>
<option value="N" ${processInfoConfig.processStartIsshow=="N"?"selected":""}>不可见</option>
</select>
</td>
</tr>
<tr>
<td>流程排序号:</td>
<td><input type="text" name="processStartOrder"
preValue="${processInfoConfig.processStartOrder}"
onblur="moveout(this.id);"
value="${processInfoConfig.processStartOrder}"
id="processStartOrder" maxlength="200"
class="validate[length[0,1000]]"
onkeyup="this.value=this.value.replace(/\D/g,'')"
onafterpaste="this.value=this.value.replace(/\D/g,'')"/></td>
<td>流程更新时间:</td>
<td>${processInfoConfig.lastUpdateTimeString}</td>
<!--
<td>起草权限:</td>
<td><input type="text" name="processStartAuth" value=""
id="processStartAuth" class="validate[length[0,500]]" /></td>
-->
</tr>
<c:if test="${customSso != '1'}">
<tr>
<td rowspan="2" style="width: 200px;">桌面端相关配置:</td>
<td style="width: 100px;">环节表单路径</td>
<td colspan="3">
<input style="width: 600px" type="text" name="processPageUrl" value="${processInfoConfig.processPageUrl}" id="processPageUrl" class="validate[length[0,500]]" />
</td>
</tr>
<tr>
<td>处理协议</td>
<td colspan="3">
<select name="cprotocol" id="cprotocol">
<option value="hnzy:workitem" ${processInfoConfig.cprotocol=='hnzy:workitem'||processInfoConfig.cprotocol==null?'selected':''}>专用浏览器模式</option>
<option value="http" ${processInfoConfig.cprotocol=='http'?'selected':''}>普通浏览器模式</option>
</select>
</td>
</tr>
<tr>
<td rowspan="3">手机端相关配置:</td>
<td>环节表单路径</td>
<td colspan="3">
<input style="width: 600px" type="text" name="murl" value="${processInfoConfig.murl}" id="murl" class="validate[length[0,500]]" />
</td>
</tr>
<tr>
<td>处理协议</td>
<td colspan="3">
<select name="mprotocol" id="mprotocol">
<option value="none" ${processInfoConfig.mprotocol=='none'||processInfoConfig.mprotocol==null?'selected':''}>不支持手机处理</option>
<option value="http" ${processInfoConfig.mprotocol=='http'?'selected':''}>H5</option>
</select>
</td>
</tr>
<tr>
<td>处理状态</td>
<td colspan="3">
<select name="otherSysDealStatus" id="otherSysDealStatus">
<option value="" ${processInfoConfig.mprotocol==null?'selected':''}>请选择</option>
<option value="yes" ${processInfoConfig.otherSysDealStatus=='yes'?'selected':''}>仅阅读</option>
<option value="no" ${processInfoConfig.otherSysDealStatus=='no'?'selected':''}>可处理</option>
</select>
</td>
</tr>
<tr>
<td width="15%">流程业务处理类:</td>
<td colspan="3"><input style="width: 550px;" type="text"
name="processHandlerClassPath"
preValue="${processInfoConfig.processHandlerClassPath}"
onblur="moveout(this.id);"
value="${processInfoConfig.processHandlerClassPath}"
id="processHandlerClassPath" maxlength="200"
class="validate[length[0,1000]]" /></td>
</tr>
</c:if>
<%-- <tr>
<td width="15%">流程梳理-业务流程:</td>
<td colspan="3">
<input
<c:choose>
<c:when test="${not empty processInfoConfig.arisCode}">
value=""
</c:when>
<c:otherwise>
value="请选择"
</c:otherwise>
</c:choose>
name="arisCodeName" id="arisCodeName" readonly
onclick="showFlowFile('arisCodeName','',''); return false;" />
<input
type="hidden" name="arisCode" id="arisCode"
preValue="${processInfoConfig.arisCode}"
value="${processInfoConfig.arisCode}" />
<a class="blue" href="javascript:void(0);">
<i class="ace-icon fa fa-search bigger-130"
onclick="viewFlowFile()"/>
</i></a>
</td>
</tr> --%>
<!--
<tr>
<td>更新者:</td>
<td></td>
<td>更新时间:</td>
<td>${processInfoConfig.lastUpdateTimeString}</td>
</tr>
-->
<tr>
<td>流程备注:</td>
<td colspan="3"><span class="float_left"> <textarea
preValue="${processInfoConfig.remark}"
onblur="moveout(this.id);"
name="remark" id="remark" style="width: 550px;">${processInfoConfig.remark}</textarea>
</span></td>
</tr>
</table>
<div class="col-md-offset-1 col-md-9" style="text-align: center;">
<button type="button" class="btn btn-sm btn-primary"
id="submitButton" />
保存
<i class="ace-icon fa fa-save bigger-110"></i>
</button>
</div>
</div>
</div>
</div>
</form>
<jsp:include page="../../../pages/sysGlType/selectTypeTree.jsp" flush="false" />
</body>
</html>

View File

@@ -0,0 +1,155 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/commons/taglibs.jsp" %>
<%@page import="com.blueland.bpm.manage.util.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="${ctx_js_plugins}/zTree/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="${ctx_js_plugins}/zTree/js/jquery.ztree.core-3.4.js"></script>
<script type="text/javascript" src="${ctx_js_plugins}/zTree/js/jquery.ztree.excheck-3.4.js"></script>
<link rel="stylesheet" href="${ctx_js_plugins}/zTree/css/demo.css" type="text/css">
<link rel="stylesheet" href="${ctx_js_plugins}/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript">
var jQuery_1_4_4= $.noConflict(true);
</script>
<SCRIPT type="text/javascript">
var inputObj;
var initParams1="";
var initParams2="";
var initParams3="";
var initParams4=false;
function createFileSetting(){
var setting = {
view: {
dblClickExpand: false,
expandSpeed: "slow",
selectedMulti: false
},
data: {
simpleData: {
enable : true,
idKey : "id",
pIdKey : "pId" ,
DIY:"isAccessTopMenu"
}
},async: {
enable: true,
url:"<%=MyContants.BPM_FILE_PATH%>"+"/ebpm-bpa-web/flow/getTreeProcessFile"
},
callback: {
onClick: onFileClick
}
};
return setting;
}
function beforeClick(treeId, treeNode) {
var zTree = jQuery_1_4_4.fn.zTree.getZTreeObj("treeFile");
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
function onCheck(e, treeId, treeNode) {
var zTree = jQuery_1_4_4.fn.zTree.getZTreeObj("treeFile"),
nodes = zTree.getCheckedNodes(true),
name = "",
id="";
//nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
if(nodes[i].level<=0||nodes[i].level<=initParams3)
continue;
name += nodes[i].name + ",";
id += nodes[i].id + ",";
}
if (id.length > 0 ) id = id.substring(0, id.length-1);
if (name.length > 0 ) name = name.substring(0, name.length-1);
try{
var fun=inputObj+"OnDbClick";
eval(fun+"('"+name +"','"+id+"')");
}catch(e){}
}
function onFileClick(e, treeId, treeNode) {
if(treeNode.fileId == null){
return;
}
var zTree = jQuery_1_4_4.fn.zTree.getZTreeObj("treeFile"),
nodes = zTree.getSelectedNodes(),
name = "",
fileId="";
if(nodes==""){
try{
var fun=inputObj+"OnDbClick";
eval(fun+"('','')");
}catch(e){}
hideMenu();
return ;
}
//nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
if(nodes[i].level<=0||nodes[i].level<=initParams3)
return;
if(nodes[i].pId=="TOP_FLOW_TYPE"){
continue;
}
name += nodes[i].name + ",";
fileId += nodes[i].fileId + ",";
}
if (fileId.length > 0 ) {
fileId = fileId.substring(0, fileId.length-1);
}else{
return;
}
if (name.length > 0 ) name = name.substring(0, name.length-1);
try{
var fun=inputObj+"OnDbClick";
eval(fun+"('"+name +"','"+fileId+"')");
}catch(e){}
hideMenu();
}
function showFlowFile(inputName,params1,params2,params3) {
initParams1=params1;
initParams2=params2;
initParams3=params3;
jQuery_1_4_4.fn.zTree.init(jQuery_1_4_4("#treeFile"), createFileSetting());
inputObj=inputName;
var cityObj = jQuery_1_4_4("#"+inputName);
var cityOffset = cityObj.offset();
jQuery_1_4_4("#menuFileContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
jQuery_1_4_4("body").bind("mousedown", onBodyDown);
}
function hideMenu() {
jQuery_1_4_4("#menuFileContent").fadeOut("fast");
jQuery_1_4_4("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "menuFileContent" || jQuery_1_4_4(event.target).parents("#menuFileContent").length>0)) {
hideMenu();
}
}
jQuery_1_4_4(document).ready(function(){
//
});
</SCRIPT>
</head>
<BODY>
<div id="menuFileContent" class="menuContent" style="z-index:1;display:none; position: absolute;">
<ul id="treeFile" class="ztree" style="margin-top:0; width:270px;height:150px"></ul>
</div>
</BODY>
</HTML>

View File

@@ -0,0 +1,70 @@
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/commons/taglibs.jsp" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ include file="/commons/meta.jsp"%>
<base href="<%=basePath%>">
<title>流程定义权限管理</title>
</head>
<body>
<div id="scrollContent">
<div class="box2" panelTitle="流程定义信息配置表新增" showStatus="false" roller="true">
<form action="${ctx}/processInfo/save.do" method="post">
<button id="submitButton" name="submitButton" type="submit">
<span class="icon_save">保存</span>
<i class="ace-icon fa fa-save bigger-110"></i>
</button>
<table class="tableStyle">
<tr>
<th>权限分类</th>
<!-- 排序时为th增加sortColumn即可,new SimpleTable('sortColumns')会为tableHeader自动增加排序功能; -->
<th sortColumn="processDefName" >授权给</th>
<th sortColumn="processTypeId" >操作</th>
</tr>
<tr>
<td>用户授权</td>
<td><input type="text" name="userPowers" id="userPowers" value=""/></td>
<td>
<button id="userPowersSelButton" name="userPowersSelButton" type="button">
<span class="icon_save">选择</span>
</button>
<button id="userPowersClearButton" name="userPowersClearButton" type="button">
<span class="icon_save">重置</span>
</button>
</td>
</tr>
<tr>
<td>角色授权</td>
<td><input type="text" name="rolePowers" id="rolePowers" value=""/></td>
<td>
<button id="rolePowersSelButton" name="rolePowersSelButton" type="button">
<span class="icon_save">选择</span>
</button>
<button id="rolePowersClearButton" name="rolePowersClearButton" type="button">
<span class="icon_save">重置</span>
</button>
</td>
</tr>
<tr>
<td>组织授权(本层级)</td>
<td><input type="text" name="orgPowers" id="orgPowers" value=""/></td>
<td>
<button id="orgPowersSelButton" name="orgPowersSelButton" type="button">
<span class="icon_save">选择</span>
</button>
<button id="orgPowersClearButton" name="orgPowersClearButton" type="button">
<span class="icon_save">重置</span>
</button>
</td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,55 @@
<%@page
import="com.blueland.bpm.engine.core.model.ProcessDefinitionModel"%>
<%@page import="com.blueland.bpm.engine.config.model.ProcessInfoConfig"%>
<%@page import="com.blueland.bpm.common.page.*"%>
<%@page import="com.blueland.bpm.common.util.*"%>
<%@page import="java.util.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>查看流程图</title>
<%@ include file="/commons/meta.jsp"%>
<link rel="stylesheet" href="${ctx}/resource/js/plugins/bpmn/css/diagram-js.css" />
</head>
<body class="white-page">
<div class="main-container" id="main-container">
<textarea name="bpmXml" rows="5" cols="20" style="display:none" id="bpmXml">
${bpmXml}
</textarea>
<div class="canvas">
<div id="js-canvas"></div>
</div>
</div>
<!-- viewer -->
<script type='text/javascript'src="${ctx}/resource/js/plugins/bpmn/bpmn-viewer.development.js"></script>
<script type="text/javascript">
var height1 = window.parent.document.documentElement.clientHeight;
var windowHeight = (parseInt(height1)-250)
var viewer = new BpmnJS({
container: document.querySelector('#js-canvas'),
height: windowHeight
});
$(function(){
createNewDiagram();
})
function createNewDiagram () {
viewer.importXML($("#bpmXml").val(), function (err) {
if (err) {
console.error(err)
}else{
var canvas = viewer.get('canvas');
canvas.zoom('fit-viewport');
}
})
}
</script>
</body>
</html>