Răsfoiți Sursa

Merge branch 'add_pos_id_to_filter_users_with_role' of wy/zdqy_ibps into matser

吴懿 2 ani în urmă
părinte
comite
79bcda2271

+ 111 - 109
ibps-bpmn-root/modules/bpmn-biz/src/main/resources/org/activiti/impl/bpmn/parser/usercalc/base.xsd

@@ -1,95 +1,95 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:base="http://www.bpmhome.cn/bpm/plugins/userCalc/base" targetNamespace="http://www.bpmhome.cn/bpm/plugins/userCalc/base" xmlns:tns="http://www.example.org/base" elementFormDefault="qualified">
-	
-    <xs:simpleType name="logicCalType">
-    	<xs:annotation>
-    		<xs:documentation>逻辑运算(or,and,exclude)</xs:documentation>
-    	</xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="or"/>
-            <xs:enumeration value="and"/>
-            <xs:enumeration value="exclude"/>
-        </xs:restriction>
-    </xs:simpleType>
-    
-    <xs:simpleType name="extractType">
-    	<xs:annotation>
-    		<xs:documentation>人员抽取类型</xs:documentation>
-    	</xs:annotation>
-    	<xs:restriction base="xs:string">
-            <xs:enumeration value="no"/>
-            <xs:enumeration value="extract"/>
-            <xs:enumeration value="secondExtract"/>
-            <xs:enumeration value="usergroup"/>
-        </xs:restriction>
-    </xs:simpleType>
-    
-    <xs:simpleType name="boolType">
-    	<xs:annotation>
-    		<xs:documentation>布尔值(Y,N)</xs:documentation>
-    	</xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="Y"/>
-            <xs:enumeration value="N"/>
-        </xs:restriction>
-    </xs:simpleType>    
-    
-    <xs:complexType name="abstractLogic">
-    	<xs:attribute name="logicCal" type="base:logicCalType" />
-    	<xs:attribute name="extract" type="base:extractType" /> 
-    </xs:complexType>
-    
-    <xs:element name="userRule">
-    	<xs:complexType>
-    		<xs:all> 
-	    		<xs:element name="description" type="xs:string" maxOccurs="1" minOccurs="0">
-	    			<xs:annotation>
-			            <xs:documentation>描述</xs:documentation>
-			        </xs:annotation>
-	    		</xs:element>
-	    		<xs:element name="condition" type="xs:string" maxOccurs="1" minOccurs="0">
-	    			<xs:annotation>
-			            <xs:documentation>条件表达式</xs:documentation>
-			        </xs:annotation>
-	    		</xs:element>
-	    		<xs:element name="conditionMode" type="xs:string" maxOccurs="1" minOccurs="0">
-	    			<xs:annotation>
-			            <xs:documentation>条件表达式模式:design=来自设计器;input=直接输入</xs:documentation>
-			        </xs:annotation>
-	    		</xs:element>    
-	    		<xs:element name="parentFlowkey" type="xs:string" maxOccurs="1" minOccurs="0">
-	    			<xs:annotation>
-			            <xs:documentation>父流程的定义Key</xs:documentation>
-			        </xs:annotation>
-	    		</xs:element> 		
-	    		<xs:element name="calcs" maxOccurs="1" minOccurs="1">
-	    			<xs:annotation>
-			            <xs:documentation>人员计算插件</xs:documentation>
-			        </xs:annotation>
-	    		</xs:element>
-    		</xs:all>
-    	
-	    	<xs:attribute name="name" type="xs:string">
-	    		<xs:annotation>
-			            <xs:documentation>规则名称</xs:documentation>
-			        </xs:annotation>
-	    	</xs:attribute>
-	    	
-	    	<xs:attribute name="groupNo" type="xs:int" use="required">
-	    		<xs:annotation>
-			            <xs:documentation>分组编号</xs:documentation>
-			        </xs:annotation>
-	    	</xs:attribute>
-    	</xs:complexType>
-    </xs:element>
-	
+
+	<xs:simpleType name="logicCalType">
+		<xs:annotation>
+			<xs:documentation>逻辑运算(or,and,exclude)</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="or"/>
+			<xs:enumeration value="and"/>
+			<xs:enumeration value="exclude"/>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="extractType">
+		<xs:annotation>
+			<xs:documentation>人员抽取类型</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="no"/>
+			<xs:enumeration value="extract"/>
+			<xs:enumeration value="secondExtract"/>
+			<xs:enumeration value="usergroup"/>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="boolType">
+		<xs:annotation>
+			<xs:documentation>布尔值(Y,N)</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="Y"/>
+			<xs:enumeration value="N"/>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:complexType name="abstractLogic">
+		<xs:attribute name="logicCal" type="base:logicCalType" />
+		<xs:attribute name="extract" type="base:extractType" />
+	</xs:complexType>
+
+	<xs:element name="userRule">
+		<xs:complexType>
+			<xs:all>
+				<xs:element name="description" type="xs:string" maxOccurs="1" minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>描述</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:element name="condition" type="xs:string" maxOccurs="1" minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>条件表达式</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:element name="conditionMode" type="xs:string" maxOccurs="1" minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>条件表达式模式:design=来自设计器;input=直接输入</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:element name="parentFlowkey" type="xs:string" maxOccurs="1" minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>父流程的定义Key</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:element name="calcs" maxOccurs="1" minOccurs="1">
+					<xs:annotation>
+						<xs:documentation>人员计算插件</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:all>
+
+			<xs:attribute name="name" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>规则名称</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+
+			<xs:attribute name="groupNo" type="xs:int" use="required">
+				<xs:annotation>
+					<xs:documentation>分组编号</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+
 	<xs:complexType name="executorVar">
 		<xs:attribute name="source" type="base:executorSrcType" use="required">
 			<xs:annotation>
 				<xs:documentation>值来自BO还是流程变量</xs:documentation>
 			</xs:annotation>
 		</xs:attribute>
-		
+
 		<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
 		<xs:attribute name="value" type="xs:string" use="required"></xs:attribute>
 		<xs:attribute name="executorType" type="base:executorType" use="required"></xs:attribute>
@@ -99,7 +99,7 @@
 			</xs:annotation>
 		</xs:attribute>
 	</xs:complexType>
-	
+
 	<xs:simpleType name="executorSrcType">
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="boVar"></xs:enumeration>
@@ -107,43 +107,45 @@
 			<xs:enumeration value="consVar"></xs:enumeration>
 		</xs:restriction>
 	</xs:simpleType>
-	
+
 	<xs:simpleType name="executorType">
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="org"></xs:enumeration>
 			<xs:enumeration value="user"></xs:enumeration>
+			<xs:enumeration value="position"></xs:enumeration>
 		</xs:restriction>
 	</xs:simpleType>
-	
+
 	<xs:simpleType name="valType">
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="account"></xs:enumeration>
 			<xs:enumeration value="userId"></xs:enumeration>
 			<xs:enumeration value="orgKey"></xs:enumeration>
 			<xs:enumeration value="orgId"></xs:enumeration>
+			<xs:enumeration value="positionId"></xs:enumeration>
 			<xs:enumeration value=""></xs:enumeration>
 		</xs:restriction>
 	</xs:simpleType>
-   
-   <xs:simpleType name="userType">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="start"></xs:enumeration>
-            <xs:enumeration value="prev"></xs:enumeration>
-            <xs:enumeration value="spec"></xs:enumeration>
-            <xs:enumeration value="var"></xs:enumeration>
-            <xs:enumeration value="node"></xs:enumeration>
-        </xs:restriction>
-    </xs:simpleType>
-    
-    <xs:simpleType name="partyType">
-    	<xs:annotation>
-    		<xs:documentation>参与者类型(org/position)</xs:documentation>
-    	</xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="org"/>
-            <xs:enumeration value="position"/>
-            <xs:enumeration value="employee"/>
-            <xs:enumeration value="role"/>
-        </xs:restriction>
-    </xs:simpleType>	
+
+	<xs:simpleType name="userType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="start"></xs:enumeration>
+			<xs:enumeration value="prev"></xs:enumeration>
+			<xs:enumeration value="spec"></xs:enumeration>
+			<xs:enumeration value="var"></xs:enumeration>
+			<xs:enumeration value="node"></xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="partyType">
+		<xs:annotation>
+			<xs:documentation>参与者类型(org/position)</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="org"/>
+			<xs:enumeration value="position"/>
+			<xs:enumeration value="employee"/>
+			<xs:enumeration value="role"/>
+		</xs:restriction>
+	</xs:simpleType>
 </xs:schema>

+ 11 - 10
ibps-bpmn-root/modules/bpmn-biz/src/main/resources/org/activiti/impl/bpmn/parser/usercalc/pos.xsd

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-	xmlns="http://www.bpmhome.cn/bpm/plugins/userCalc/pos"
-	targetNamespace="http://www.bpmhome.cn/bpm/plugins/userCalc/pos"
-	xmlns:base="http://www.bpmhome.cn/bpm/plugins/userCalc/base"
-	elementFormDefault="qualified">
+		   xmlns="http://www.bpmhome.cn/bpm/plugins/userCalc/pos"
+		   targetNamespace="http://www.bpmhome.cn/bpm/plugins/userCalc/pos"
+		   xmlns:base="http://www.bpmhome.cn/bpm/plugins/userCalc/base"
+		   elementFormDefault="qualified">
 	<xs:import namespace="http://www.bpmhome.cn/bpm/plugins/userCalc/base"
-		schemaLocation="base.xsd" />
+			   schemaLocation="base.xsd" />
 	<xs:element name="pos">
 		<xs:annotation>
 			<xs:documentation>岗位用户</xs:documentation>
@@ -32,11 +32,12 @@
 							</xs:complexType>
 						</xs:element>
 						<xs:element name="nodes" maxOccurs="1" minOccurs="0">
-                            <xs:complexType>
-                                <xs:attribute name="nodeId"  use="required"/>
-                                <xs:attribute name="nodeName" use="required"/>
-                            </xs:complexType>
-                        </xs:element>
+							<xs:complexType>
+								<xs:attribute name="nodeId"  use="required"/>
+								<xs:attribute name="nodeName" use="required"/>
+							</xs:complexType>
+						</xs:element>
+						<xs:element name="executorVar" type="base:executorVar" maxOccurs="1" minOccurs="0"/>
 					</xs:all>
 
 					<xs:attribute name="source" type="base:userType" use="required">

+ 23 - 0
ibps-bpmn-root/modules/bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc/pos/context/PosPluginContext.java

@@ -4,6 +4,7 @@ import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
+import com.lc.ibps.bpmn.plugin.usercalc.ExecutorVar;
 import org.w3c.dom.Element;
 
 import com.jamesmurty.utils.XMLBuilder;
@@ -50,6 +51,9 @@ public class PosPluginContext extends AbstractUserCalcPluginContext implements I
 		else if("node".equals(source)){
 			sb.append("节点[").append(def.getNodeName()).append("]");
 		}
+		else if("var".equals(source)){
+			sb.append("人员变量["+def.getExecutorVar().getName()+"]");
+		}
 		
 		return sb.toString();
 	}
@@ -87,6 +91,12 @@ public class PosPluginContext extends AbstractUserCalcPluginContext implements I
 				.a("posName", def.getPosName());
 			}else if("node".equals(source)){
 				xmlBuilder.e("nodes").a("nodeId", def.getNodeId()).a("nodeName", def.getNodeName()).up();
+			}else if("var".equals(source)){
+				xmlBuilder.e("executorVar").a("source", def.getExecutorVar().getSource())
+						.a("name", def.getExecutorVar().getName())
+						.a("value", def.getExecutorVar().getValue())
+						.a("executorType", def.getExecutorVar().getExecutorType())
+						.a("valType", def.getExecutorVar().getValType()).up();
 			}
 			
 			return xmlBuilder.asString();
@@ -119,6 +129,15 @@ public class PosPluginContext extends AbstractUserCalcPluginContext implements I
 			
 			def.setNodeId(nodeId);
 			def.setNodeName(nodeName);
+		}else if("var".equals(source)){
+			Element varEl= XmlUtil.getChildNodeByName(element, "executorVar");
+			String varSource=varEl.getAttribute("source");
+			String executorType=varEl.getAttribute("executorType");
+			String valType= varEl.getAttribute("valType");
+			String name=varEl.getAttribute("name");
+			String value=varEl.getAttribute("value");
+			ExecutorVar executorVar = new ExecutorVar(varSource, name, executorType, valType, value);
+			def.setExecutorVar(executorVar);
 		}
 		
 		return def;
@@ -139,6 +158,10 @@ public class PosPluginContext extends AbstractUserCalcPluginContext implements I
 			String nodeName=pluginJson.getString("nodeName");
 			def.setNodeId(nodeId);
 			def.setNodeName(nodeName);
+		}else if("var".equals(source)){
+			JSONObject var=pluginJson.getJSONObject("executorVar");
+			ExecutorVar executorVar = (ExecutorVar) JSONObject.toBean(var,ExecutorVar.class);
+			def.setExecutorVar(executorVar);
 		}
 
 		return def;

+ 11 - 1
ibps-bpmn-root/modules/bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc/pos/def/PosPluginDefine.java

@@ -1,6 +1,7 @@
 package com.lc.ibps.bpmn.plugin.usercalc.pos.def;
 
 import com.lc.ibps.bpmn.plugin.core.plugindef.AbstractUserCalcPluginDefine;
+import com.lc.ibps.bpmn.plugin.usercalc.ExecutorVar;
 
 /** 
  * TODO(用一句话描述这个类做什么用)。
@@ -31,7 +32,9 @@ public class PosPluginDefine extends AbstractUserCalcPluginDefine {
 	private String posName="";
 	private String nodeId="";
 	private String nodeName="";
-	
+
+	private ExecutorVar executorVar;
+
 	public String getNodeId() {
 		return nodeId;
 	}
@@ -72,4 +75,11 @@ public class PosPluginDefine extends AbstractUserCalcPluginDefine {
 		this.posName = posName;
 	}
 
+	public ExecutorVar getExecutorVar() {
+		return executorVar;
+	}
+
+	public void setExecutorVar(ExecutorVar executorVar) {
+		this.executorVar = executorVar;
+	}
 }