|
|
|
|
<!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>
|
|
|
|
|
<meta charset="UTF-8" />
|
|
|
|
|
<title>驰骋工作流</title>
|
|
|
|
|
<!-- 于庆海 -->
|
|
|
|
|
<link href="../../Scripts/easyUI145/themes/color.css" rel="stylesheet" />
|
|
|
|
|
<link href="../../Scripts/easyUI145/themes/default/easyui.css" rel="stylesheet" type="text/css" />
|
|
|
|
|
<script src="DDLBar.js" type="text/javascript"></script>
|
|
|
|
|
<script language="JavaScript" src="../../Comm/JScript.js" type="text/javascript"></script>
|
|
|
|
|
<script type="text/javascript" src="../../Scripts/bootstrap/js/jquery.min.js"></script>
|
|
|
|
|
<script src="../../Scripts/QueryString.js" type="text/javascript"></script>
|
|
|
|
|
<link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
|
|
|
|
|
<!-- 引用通用的js文件. -->
|
|
|
|
|
<script type="text/javascript" src="../../Scripts/config.js"></script>
|
|
|
|
|
<script type="text/javascript" src="../../Comm/Gener.js"></script>
|
|
|
|
|
<script src="../Admin.js"></script>
|
|
|
|
|
<script type="text/javascript" language="javascript">
|
|
|
|
|
//页面启动函数.
|
|
|
|
|
$(function () {
|
|
|
|
|
|
|
|
|
|
$("#Msg").html("正在加载,请稍后......");
|
|
|
|
|
|
|
|
|
|
InitPage();
|
|
|
|
|
|
|
|
|
|
$("#Msg").html("");
|
|
|
|
|
});
|
|
|
|
|
//初始化数据.
|
|
|
|
|
function InitPage() {
|
|
|
|
|
|
|
|
|
|
var fk_node = GetQueryString("FK_Node");
|
|
|
|
|
var node = new Entity("BP.WF.Node", fk_node);
|
|
|
|
|
|
|
|
|
|
//调用公共类库的方法:执行批量主表赋值
|
|
|
|
|
GenerFullAllCtrlsVal(node);
|
|
|
|
|
|
|
|
|
|
$("#TB_Alert").val(node.BlockAlert);
|
|
|
|
|
switch (parseInt(node.BlockModel)) {
|
|
|
|
|
case 0:
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$("#TB_SpecSubFlow").val(node.BlockExp);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$("#TB_SQL").val(node.BlockExp);
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
$("#TB_Exp").val(node.BlockExp);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
$("#TB_SpecSubFlowNode").val(node.BlockExp);
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
$("#TB_SameLevelSubFlow").val(node.BlockExp);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Btn_Save_Click() {
|
|
|
|
|
|
|
|
|
|
var checkBoxIDs = GenerCheckIDs(); //获得所有的 checkBox ID传入到后台去,用于解决checkbox控件,在没有被选择的时候,没有值的问题。
|
|
|
|
|
|
|
|
|
|
var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_AttrNode");
|
|
|
|
|
handler.AddPara("FK_Node", GetQueryString("FK_Node"));
|
|
|
|
|
handler.AddPara("CheckBoxIDs", checkBoxIDs);
|
|
|
|
|
handler.AddFormData();
|
|
|
|
|
var data = handler.DoMethodReturnString("BlockModel_Save");
|
|
|
|
|
|
|
|
|
|
if (data.indexOf('err@') >= 0) {
|
|
|
|
|
alert(data);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
alert(data);
|
|
|
|
|
Reload();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<form id="cc">
|
|
|
|
|
<div id="bar" class="cs-tr cs-bar">
|
|
|
|
|
<label style="float:left;font-size:15px;font-weight:bolder;padding-top:10px;">发送阻塞规则向</label>
|
|
|
|
|
<input type="button" id="Btn_Save" runat="server" value="保存" onclick="Btn_Save_Click()" />
|
|
|
|
|
</div>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_0" value="0" name="RB_BlockModel" runat="server" /><label for="RB_BlockModel_0">不阻塞</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<ul style="color: Gray;">
|
|
|
|
|
<li>默认模式,不阻塞。</li>
|
|
|
|
|
<li>如果以下几种模式不能满足需求就可以在发送成功前的事件里抛出异常,阻止向下运动。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_1" value="1" runat="server" name="RB_BlockModel" /><label for="RB_BlockModel_1">当前节点有未完成的子流程时</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<ul style="color: Gray;">
|
|
|
|
|
<li>当前节点吊起了子流程,并且有未完成的子流程时就不能向下运动。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_2" value="2" runat="" name="RB_BlockModel" /><label for="RB_BlockModel_2">按约定格式阻塞未完成子流程</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<br /><a href="javascript:ShowHidden('flows')">请设置表达式:</a>
|
|
|
|
|
<div id="flows" style="color: Gray; display: none">
|
|
|
|
|
<ul>
|
|
|
|
|
<li>当该节点向下运动时,要检查指定的历史节点曾经启动的指定的子流程全部完成,作为条件。</li>
|
|
|
|
|
<li>例如:在D节点上,要检查曾经在C节点上启动的甲子流程是否全部完成,如果完成就不阻塞。</li>
|
|
|
|
|
<li>配置格式:@指定的节点1=子流程编号1@指定的节点n=子流程编号n。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" id="TB_SpecSubFlow" name="TB_SpecSubFlow" runat="server" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_5" value="5" runat="" name="RB_BlockModel" /><label for="RB_BlockModel_5">是否启用为父流程时,子流程未运行到指定的节点</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<br /><a href="javascript:ShowHidden('SpecSubFlow')"></a>
|
|
|
|
|
<div id="SpecSubFlow" style="color: Gray; display: none">
|
|
|
|
|
<ul>
|
|
|
|
|
<li>当该节点向下运动时,要检查指定的子流程是否运行过指定的节点,作为条件。</li>
|
|
|
|
|
<li>例如:在D节点上,要检查启动的子流程是否全部运行到指定的节点,如果完成就不阻塞。</li>
|
|
|
|
|
<li>配置格式:@指定的节点1=子流程节点编号1@指定的节点n=子流程节点编号n。。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" id="TB_SpecSubFlowNode" name="TB_SpecSubFlowNode" runat="server" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_6" value="6" runat="" name="RB_BlockModel" /><label for="RB_BlockModel_6">是否启用为平级子流程时,子流程未运行到指定的节点</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<br /><a href="javascript:ShowHidden('SameLevelSubFlow')">请设置表达式: </a>
|
|
|
|
|
<div id="SameLevelSubFlow" style="color: Gray; display: none">
|
|
|
|
|
<ul>
|
|
|
|
|
<li>当该节点向下运动时,要检查指定平级子流程是否运行过指定的节点,作为条件。</li>
|
|
|
|
|
<li>例如:在D节点上,要检查启动的平级子流程是否全部运行到指定的节点,如果完成就不阻塞。</li>
|
|
|
|
|
<li>配置格式:402,503。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" id="TB_SameLevelSubFlow" name="TB_SameLevelSubFlow" runat="server" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_3" value="3" runat="server" name="RB_BlockModel" /><label for="RB_BlockModel_3">按照SQL阻塞</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<br /><a href="javascript:ShowHidden('sql')">请输入SQL:</a>
|
|
|
|
|
<div id="sql" style="color: Gray; display: none">
|
|
|
|
|
<ul>
|
|
|
|
|
<li>配置一个SQL,该SQL返回一行一列的数值类型的值。</li>
|
|
|
|
|
<li>如果该值大于0,则阻塞发送, 反之不阻塞.</li>
|
|
|
|
|
<li>配置的参数支持ccbpm表达式。</li>
|
|
|
|
|
<li>demo:SELECT count(*) as NUM FROM nd702 WHERE jine1!=jine2 AND OID=@WorkID</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" id="TB_SQL" name="TB_SQL" runat="server" textmode="MultiLine"
|
|
|
|
|
rows="1" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>
|
|
|
|
|
<input type="radio" id="RB_BlockModel_4" value="4" runat="server" name="RB_BlockModel" /><label for="RB_BlockModel_4">按照表达式阻塞</label>
|
|
|
|
|
</legend>
|
|
|
|
|
<br /><a href="javascript:ShowHidden('exp')">请输入表达式: </a>
|
|
|
|
|
<div id="exp" style="color: Gray; display: none">
|
|
|
|
|
<ul>
|
|
|
|
|
<li>配置一个表达式, 比如: @MyFieldName = 1 该表达式成立的时候,系统就不能向下发送。 </li>
|
|
|
|
|
<li>表达式:@+字段名+空格+运算符+空格+值;字段名就是节点表单的所有字段,空格为英文状态下空格,运算符包含=、!=、>、>=、<、<=、LIKE </li>
|
|
|
|
|
<li>注意: 仅仅支持一个表达式 . 比如: @JinE > 10000 </li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" id="TB_Exp" name="TB_Exp" runat="server" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend>其他选项设置</legend>
|
|
|
|
|
<br /><font color="gray">被阻塞时提示信息(默认为:符合发送阻塞规则,不能向下发送):</font>
|
|
|
|
|
<input type="text" id="TB_Alert" name="TB_Alert" runat="server" style="width: 95%" />
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset>
|
|
|
|
|
<legend id="help" class="form-instructor"></legend>
|
|
|
|
|
<ul>
|
|
|
|
|
<li>发送阻塞,就是让当前节点不能向下运动的规则。</li>
|
|
|
|
|
<li>如果满足一定的条件,就不能让其向下运动。</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</fieldset>
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|