排他网关(ExclusiveGateWay)

网关(ExclusiveGateWay)

作者:邓家海
2018年3月11日 00:13:25

情景:
某一家公司最近在给一个单位做一个财务审批的OA。具体需求是这样的:当部门申请的金额小于一万块的时候,财务部可以直接决策。当部分申请的金额大于一万块并且小于三十万的时候,财务部经理决策,当金额超出了或者等于三十万的时候,需要财务主管来决策。那么我们的工作流应该如何设计呢?
也许有人会说,这不简单,小于一万直接发送到财务部,大于一万小于三十,直接给财务经理。其他就发给财务主管。
你是否注意到,其实这样字可以存在审批漏洞。打个比方,我跟部门一个哥们非常好,我又想申请大于一万的经费。我是不是可以直接越过领导发送给我哥们,让他给我放款。再或者,来了一个新人,新人并不知道这个申请的规则,申请几块钱,也发给了财务主管,财务主管非常生气的说:我很忙的,没空给你处理这些蒜皮小事。
分析:
工作流的作用无非就是自动化,规范化。形成一整套的流程。制定好一些列规则后,能够严格遵守这些规则来处理任务。很多一些国产的工作流很灵活,但是审核机制或者工作机制很不严谨。我是不怎么理解这些工作流中国化的。当然,客户是上帝,客户说了算。我们这里以BPMN2.0的标准。就可以使用排他网关来实现我们的需求。
关于排他网关:
1. 排他网关exclusive gateway 经常使用流程变量决定流程下一步要选择的路径
2. 排他网关(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data¬based gateway),用于为流程中的决策建模。
3. 当执行到达这个网关时,所有出口顺序流会按照它们定义的顺序进行计算。条件计算为true的顺序流(当没有设置条件时,认为顺序流定义为true)会被选择用于继续流程。
4. 用排他网关时,只会选择一条顺序流。当多条顺序 流的条件都计算为true时,其中在XML中定义的第一条(也只有这条)会被选择,用于继续流程。如果没有可选的顺序流,会抛出异常。
5. 排他网关,用内部带有’X’图标的标准网关(菱形)表示,'X’图标代表异或(XOR)的含义。请注意内部没有图标的网关默认为排他网关。BPMN 2.0规范不允许在同一个流程中,混合使用带有及没有X的菱形标志
6. 一个排他网关对应一个以上的顺序流


图1 排他网关

说明:网关是一个菱形◇,排他网关就是菱形里面加个'X’,'X’图标代表异或(XOR)的含义



图2 默认顺序流

说明:默认顺序流,用起点带有“斜线”标记的一般顺序流表示。
活动的默认顺序流,由该活动的default属性定义。
当其他连线计算都为false的时候,才会走默认顺序流。

排他网关的实现:

关于资金申请审批流程。
步骤一:设计流程图
我们这里设置一个发起部门,就是资金发起申请部门
流程申请的流程:
1. 小于或者等于一万的,直接走财务审批即可
2. 大于一万小于三十万的,需要财务经理审批。
3. 大于或者等于三十万的,需要爱财务主管审批。



图3 排他网关设计

步骤二:并设置表达式

Activiti里面设置表达式可以用EL(Expression Language)表达式。。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。EL不在本章节的讨论范围内,需要了解的可以自行找资料。
1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${ user. My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量

表达式一:${money>1&&money<30}


 


图4 设置表达式

表达式二:${money>=30}


 


图6 设置表达式

无表达式:默认
默认是指其他其他条件都不满足的条件下,走默认路线。



 

图7 设置表达式

流程图代码:

 1 <?xml version='1.0' encoding='UTF-8'?>
 2 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
 3 <process id="process" isExecutable="true">
 4 <startEvent id="sid-7FF420A9-E0A3-435A-8C64-17F4948E169F" />
 5 <userTask id="sid-77BDF7D7-590C-421B-AE15-8BA17A6C37BB" name="部门" activiti:assignee="admin" />
 6 <exclusiveGateway id="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" default="sid-21324A76-AD4C-4B76-989A-4870D2AACA3C" />
 7 <userTask id="sid-E53B2318-C85B-442F-9DA7-56E96341FB79" name="财务经理" activiti:assignee="admin" />
 8 <userTask id="sid-E974CD46-11DC-4860-B277-E452C97D4487" name="财务主管" activiti:assignee="admin" />
 9 <endEvent id="sid-6E6E0074-2729-4217-B273-938DE98CF5BE" />
10 <sequenceFlow id="sid-48D646A3-2C45-4F83-9BAF-0ABECFE842D0" sourceRef="sid-E53B2318-C85B-442F-9DA7-56E96341FB79" targetRef="sid-6E6E0074-2729-4217-B273-938DE98CF5BE" />
11 <sequenceFlow id="sid-B8EA0191-9F35-4D09-BEA6-EF41420A86ED" sourceRef="sid-7FF420A9-E0A3-435A-8C64-17F4948E169F" targetRef="sid-77BDF7D7-590C-421B-AE15-8BA17A6C37BB" />
12 <sequenceFlow id="sid-4298366E-F857-4818-8570-DDF1DA7F41AF" sourceRef="sid-77BDF7D7-590C-421B-AE15-8BA17A6C37BB" targetRef="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" />
13 <userTask id="sid-8DE1277A-5CAA-4576-A7CD-55E6272B0A6C" name="财务" activiti:assignee="admin" />
14 <sequenceFlow id="sid-4C05BAAF-2FBC-4220-B832-52FFEED2A855" sourceRef="sid-8DE1277A-5CAA-4576-A7CD-55E6272B0A6C" targetRef="sid-6E6E0074-2729-4217-B273-938DE98CF5BE" />
15 <sequenceFlow id="sid-21324A76-AD4C-4B76-989A-4870D2AACA3C" name="默认" sourceRef="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" targetRef="sid-8DE1277A-5CAA-4576-A7CD-55E6272B0A6C" />
16 <sequenceFlow id="sid-8D92C614-D1B7-4AF9-9489-F7AAA9732868" sourceRef="sid-E974CD46-11DC-4860-B277-E452C97D4487" targetRef="sid-6E6E0074-2729-4217-B273-938DE98CF5BE" />
17 <sequenceFlow id="sid-838AEA2C-C494-4830-B78F-20EBA96ECB43" name="金额&lt;30万且大于1万" sourceRef="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" targetRef="sid-E53B2318-C85B-442F-9DA7-56E96341FB79">
18 <conditionExpression xsi:type="tFormalExpression"><![CDATA[${money>1&&money<30}]]></conditionExpression>
19 </sequenceFlow>
20 <sequenceFlow id="sid-D916A9B9-DC9A-4FC1-BB6B-377520F5F7FC" name="金额>=30万" sourceRef="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" targetRef="sid-E974CD46-11DC-4860-B277-E452C97D4487">
21 <conditionExpression xsi:type="tFormalExpression"><![CDATA[${money>=30}]]></conditionExpression>
22 </sequenceFlow>
23 </process>
24 <bpmndi:BPMNDiagram id="BPMNDiagram_process">
25 <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
26 <bpmndi:BPMNShape bpmnElement="sid-7FF420A9-E0A3-435A-8C64-17F4948E169F" id="BPMNShape_sid-7FF420A9-E0A3-435A-8C64-17F4948E169F">
27 <omgdc:Bounds height="30.0" width="30.0" x="105.0" y="155.0" />
28 </bpmndi:BPMNShape>
29 <bpmndi:BPMNShape bpmnElement="sid-77BDF7D7-590C-421B-AE15-8BA17A6C37BB" id="BPMNShape_sid-77BDF7D7-590C-421B-AE15-8BA17A6C37BB">
30 <omgdc:Bounds height="80.0" width="100.0" x="202.0" y="130.0" />
31 </bpmndi:BPMNShape>
32 <bpmndi:BPMNShape bpmnElement="sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9" id="BPMNShape_sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9">
33 <omgdc:Bounds height="40.0" width="40.0" x="360.0" y="150.0" />
34 </bpmndi:BPMNShape>
35 <bpmndi:BPMNShape bpmnElement="sid-E53B2318-C85B-442F-9DA7-56E96341FB79" id="BPMNShape_sid-E53B2318-C85B-442F-9DA7-56E96341FB79">
36 <omgdc:Bounds height="80.0" width="100.0" x="525.0" y="0.0" />
37 </bpmndi:BPMNShape>
38 <bpmndi:BPMNShape bpmnElement="sid-E974CD46-11DC-4860-B277-E452C97D4487" id="BPMNShape_sid-E974CD46-11DC-4860-B277-E452C97D4487">
39 <omgdc:Bounds height="80.0" width="100.0" x="540.0" y="130.0" />
40 </bpmndi:BPMNShape>
41 <bpmndi:BPMNShape bpmnElement="sid-6E6E0074-2729-4217-B273-938DE98CF5BE" id="BPMNShape_sid-6E6E0074-2729-4217-B273-938DE98CF5BE">
42 <omgdc:Bounds height="28.0" width="28.0" x="735.0" y="156.0" />
43 </bpmndi:BPMNShape>
44 <bpmndi:BPMNShape bpmnElement="sid-8DE1277A-5CAA-4576-A7CD-55E6272B0A6C" id="BPMNShape_sid-8DE1277A-5CAA-4576-A7CD-55E6272B0A6C">
45 <omgdc:Bounds height="80.0" width="100.0" x="529.0" y="254.0" />
46 </bpmndi:BPMNShape>
47 <bpmndi:BPMNEdge bpmnElement="sid-4298366E-F857-4818-8570-DDF1DA7F41AF" id="BPMNEdge_sid-4298366E-F857-4818-8570-DDF1DA7F41AF">
48 <omgdi:waypoint x="302.0" y="170.0" />
49 <omgdi:waypoint x="360.0" y="170.0" />
50 </bpmndi:BPMNEdge>
51 <bpmndi:BPMNEdge bpmnElement="sid-D916A9B9-DC9A-4FC1-BB6B-377520F5F7FC" id="BPMNEdge_sid-D916A9B9-DC9A-4FC1-BB6B-377520F5F7FC">
52 <omgdi:waypoint x="399.54545454545456" y="170.45454545454547" />
53 <omgdi:waypoint x="540.0" y="170.11933174224345" />
54 </bpmndi:BPMNEdge>
55 <bpmndi:BPMNEdge bpmnElement="sid-21324A76-AD4C-4B76-989A-4870D2AACA3C" id="BPMNEdge_sid-21324A76-AD4C-4B76-989A-4870D2AACA3C">
56 <omgdi:waypoint x="392.2127329192547" y="177.78726708074535" />
57 <omgdi:waypoint x="529.0" y="262.89168765743074" />
58 </bpmndi:BPMNEdge>
59 <bpmndi:BPMNEdge bpmnElement="sid-8D92C614-D1B7-4AF9-9489-F7AAA9732868" id="BPMNEdge_sid-8D92C614-D1B7-4AF9-9489-F7AAA9732868">
60 <omgdi:waypoint x="640.0" y="170.0" />
61 <omgdi:waypoint x="735.0" y="170.0" />
62 </bpmndi:BPMNEdge>
63 <bpmndi:BPMNEdge bpmnElement="sid-838AEA2C-C494-4830-B78F-20EBA96ECB43" id="BPMNEdge_sid-838AEA2C-C494-4830-B78F-20EBA96ECB43">
64 <omgdi:waypoint x="392.46923076923076" y="162.46923076923076" />
65 <omgdi:waypoint x="525.0" y="73.54755784061696" />
66 </bpmndi:BPMNEdge>
67 <bpmndi:BPMNEdge bpmnElement="sid-4C05BAAF-2FBC-4220-B832-52FFEED2A855" id="BPMNEdge_sid-4C05BAAF-2FBC-4220-B832-52FFEED2A855">
68 <omgdi:waypoint x="629.0" y="257.52941176470586" />
69 <omgdi:waypoint x="737.6892144673815" y="178.25022003555705" />
70 </bpmndi:BPMNEdge>
71 <bpmndi:BPMNEdge bpmnElement="sid-48D646A3-2C45-4F83-9BAF-0ABECFE842D0" id="BPMNEdge_sid-48D646A3-2C45-4F83-9BAF-0ABECFE842D0">
72 <omgdi:waypoint x="625.0" y="77.35632183908046" />
73 <omgdi:waypoint x="737.7845494056976" y="161.6206403605787" />
74 </bpmndi:BPMNEdge>
75 <bpmndi:BPMNEdge bpmnElement="sid-B8EA0191-9F35-4D09-BEA6-EF41420A86ED" id="BPMNEdge_sid-B8EA0191-9F35-4D09-BEA6-EF41420A86ED">
76 <omgdi:waypoint x="135.0" y="170.0" />
77 <omgdi:waypoint x="202.0" y="170.0" />
78 </bpmndi:BPMNEdge>
79 </bpmndi:BPMNPlane>
80 </bpmndi:BPMNDiagram>
81 </definitions>

 

步骤三:测试

1).如果是大于1万小于30万
完成任务代码

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="377542";
 6 Map<String,Object> variables=new HashMap<String,Object>();
 7 variables.put("money", 20);
 8 processEngine.getTaskService()//与正在执行的案例管理相关的Service
 9 .complete(taskId,variables);
10 
11 System.out.println("完成任务,任务ID:"+taskId);
12 }

 


 


图8 测试流程跟踪

2).如果是大于或者等于30万

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="385053";
 6 Map<String,Object> variables=new HashMap<String,Object>();
 7 variables.put("money", 40);
 8 processEngine.getTaskService()//与正在执行的案例管理相关的Service
 9 .complete(taskId,variables);
10 
11 System.out.println("完成任务,任务ID:"+taskId);
12 }

 

 


图9 测试流程跟踪

3).如果是小于1万(没有满足条件的,走默认路径:财务):

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="385048";
 6 Map<String,Object> variables=new HashMap<String,Object>();
 7 variables.put("money", 0.2);
 8 processEngine.getTaskService()//与正在执行的案例管理相关的Service
 9 .complete(taskId,variables);
10 
11 System.out.println("完成任务,任务ID:"+taskId);
12 }

 


 

图10 测试流程跟踪

4).如果没有设置金额

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="385048";
 6 //Map<String,Object> variables=new HashMap<String,Object>();
 7 //variables.put("money", 0.2);
 8 processEngine.getTaskService()//与正在执行的案例管理相关的Service
 9 .complete(taskId);
10 
11 System.out.println("完成任务,任务ID:"+taskId);

 

会抛一个异常:Unknown property used in expression: ${money>1&&money<30}

org.activiti.engine.ActivitiException: Unknown property used in expression: ${money>1&&money<30}

5).如果没有默认顺序流,又没有满足的条件(2000)

 



图11 测试流程图设计

 

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="385022";
 6 Map<String,Object> variables=new HashMap<String,Object>();
 7 variables.put("money", 0.2);
 8 processEngine.getTaskService()//与正在执行的案例管理相关的Service
 9 .complete(taskId,variables);
10 
11 System.out.println("完成任务,任务ID:"+taskId);
12 }

 

会抛异常:No outgoing sequence flow of the exclusive gateway

org.activiti.engine.ActivitiException: No outgoing sequence flow of the exclusive gateway 'sid-8E4A81E5-2B71-4397-A8F1-242C7B0F4DC9' could be selected for continuing the process

扩展:

假如我部门是确定了,但是我的金额可能是随时变动的,那么有两种方案第一种,全部动态表达式:
财务经理:
${money>num2&&money<num3}
财务主管:
${money>=num1}
财务:
${money<num4}

 1 /**完成我的任务*/
 2 @Test
 3 public void completeMyPersonalTask(){
 4 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 5 String taskId="385063";
 6 Map<String,Object> variables=new HashMap<String,Object>();
 7 variables.put("money", 40);
 8 variables.put("num1", 30);
 9 variables.put("num2", 1);
10 variables.put("num3", 30);
11 variables.put("num3", 1);
12 processEngine.getTaskService()//与正在执行的案例管理相关的Service
13 .complete(taskId,variables);
14 
15 System.out.println("完成任务,任务ID:"+taskId);
16 }

 


 


图12 测试流程跟踪

第二种,后台判断
设置表达式:
财务经理:
${flow==”1” }
财务主管:
${flow==”2” }
财务:
${flow==”3” }

 1 @Test
 2 public void completeMyPersonalTask(){
 3 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 4 String taskId="385072";
 5 Map<String,Object> variables=new HashMap<String,Object>();
 6 int money=40;
 7 if(money>=30){
 8 variables.put("flow", "1");
 9 }else if(money>1&&money<30){
10 variables.put("flow", "2");
11 }else{
12 variables.put("flow", "3");
13 }
14 processEngine.getTaskService()//与正在执行的案例管理相关的Service
15 .complete(taskId,variables);
16 
17 System.out.println("完成任务,任务ID:"+taskId);
18 }

 



图13 测试流程跟踪

  Activiti交流QQ群:634320089

转载于:https://www.cnblogs.com/dengjiahai/p/8542929.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离线安装宝塔lnmp_宝塔LNMP环境 Nginx安装EduSoho教程说明

[toc]宝塔下使用LNMP Nginx安装EduSoho创建站点 宝塔后台 > 网站 > 添加站点 > 输入信息 > 提交填写信息创建完成设置运行目录 宝塔后台 > 网站 > 管理运行目录选择web目录后保存 网站目录 > 运行目录 > 保存修改配置文件 配置文件 > 修改参数 >…

NHibernate初学者指南(10):一级和二级缓存

一级缓存 为了获得更好的性能&#xff0c;NHibernate智能地缓存数据。NHibernate有不同的缓存机制起作用&#xff0c;最重要的就是一级缓存。每个session对象维持一个一级缓存&#xff0c;session对象创建时缓存创建&#xff0c;session对象释放时缓存销毁。 缓存只不过是一个哈…

Freemarker模板引擎

模板引擎的实质就是将页面结构提前写好&#xff0c;然后将数据渲染到模板上生成一个静态页面&#xff0c;这样一来&#xff0c;下次就可以 直接访问静态文件&#xff0c;不用进行额外的获取数据的操作&#xff08;例如&#xff1a;访问数据库&#xff09;&#xff0c;这样大大提…

postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

基于windows平台的postgresql主从数据库流备份配置因工作需要&#xff0c;需要搞pg数据库的主从备份&#xff0c;领导给了个方向使用流备份&#xff0c;于是开始朝着这个方向进发。鸣谢大佬A_ccelerator的博客一、配置主从库1.环境准备对于 pg 的主从库配置&#xff0c;建议是使…

msvcrt.lib和LIBCD.lib链接冲突

今天在移植一个开源代码到windows的VC6工程&#xff0c;编译时出现了这些奇怪的LINK错误。 msvcrt.lib(MSVCRT.dll) : error LNK2005: _toupper already defined in LIBCD.lib(toupper.obj)msvcrt.lib(MSVCRT.dll) : error LNK2005: _tolower already defined in LIBCD.lib(to…

jq获取最后一个子节点_如何选择jQuery中的最后一个子元素?

牧羊人nacy如果要选择最后一个子元素&#xff0c;并且需要具体说明元素类型&#xff0c;则可以使用选择器last-of-type这是一个例子&#xff1a;$("div p:last-of-type").css("border", "3px solid red");$("div span:last-of-type").…

面向对象 - 继承/组合 - 总结

面向对象 - 继承:1.继承: 类与类之间的关系 什么是什么的关系 eg:人是动物 狗是动物 功能: 解决代码重用问题, 创建新类的方式, 类: 可继承一个或多个父类: 父类 基类/超类 类 派生类/子类 类: 对象之间相似的特征 父类:…

巧妙的有css合并图片解决tab切换的背景图片

巧妙的有css合并图片解决tab切换的背景图片 有时候做tab切换的时候 会碰到下面的这种情况 我截个图过来看看 tab切换 打开页面时候 茶庄介绍 及鼠标移上去时候 是上面这样的效果 当鼠标移下来的时候 是下面这样的 茶庄介绍 就变成这样的背景 一刚开始做这样的 我就想到用j…

XUPT_STA2018(部分题解)

A - 一方通行和最大公约数I CodeForces - 664A 作为学园都市最强的lv5&#xff0c;一方通行必须解决一道数学题才能接触last order身上植入的病毒&#xff0c;请你帮他解决这个问题。给出两个整数a,b 求出[a,b]区间中所有整数的最大公约数。输入输入包括一行&#xff0c;一…

java mongodb drivers 2升级到3_JAVA从头开始一基础梳理(3-2)

本章为大家介绍类的特性。首先&#xff0c;第一个特性----封装。在这个类别中&#xff0c;属性id 与属性 color 是可以被外部直接访问和修改的&#xff0c;比如可以看到&#xff0c;事实上这样的内容是错误的&#xff0c;我们需要在定义属性值时需要加入验证等等操作&#xff0…

C 语言第6节课

我上课C语言的第6节的笔记 &#xff1a;C语言真的需要多做多练多理解&#xff0c;不然真的学不懂.记不住呀。第一题&#xff1a;睇图片解题。main(){int x,y;scanf("%d",&x);if(x<0)printf("y%d",0);if(x>0&&x<5)printf("y%d&qu…

activiti idea 请假流程_IDEA开发流程Activiti需要注意的一些坑

1、慎用IDEA2020最新版本IDEA2020最新版本迎来了重大升级&#xff0c;对java和spring有了更好更强大的开发支持&#xff0c;但是对于Activiti流程开发却不再支持&#xff0c;可能是因为actiBPM插件太老&#xff0c;或者IDEA2020对插件支持做了规范要求等等&#xff0c;请各位喜…

VIPCA无法运行

本文转自ITPUB上一兄弟总结&#xff0c;以备查询。 今天一早来&#xff0c;同事说他周末在安装 rac 出问题了&#xff0c;始终无法使用vipca 创建 vip资源 &#xff0c; 叫我帮忙看看。 他用的是 vmware server 2.0 搭建 虚拟 rac 。 一. 环境如下  OS: Red Hat Enterprise …

python加权最小二乘_【Python】统计科学之加权最小二乘法

首页专栏python文章详情0统计科学之加权最小二乘法张俊红发布于 今天 10:03今天这篇来讲讲加权最小二乘法(WLS)&#xff0c;加权最小二乘是在普通的最小二乘回归(OLS)的基础上进行改造的&#xff0c;主要是用来解决异方差问题的。OLS的常规形式如下&#xff1a;我们在前面讲过O…

删除电脑中的mysql数据库吗_【数据库】怎么彻底删除mysql服务?

彻底删除mysql服务的步骤&#xff1a;1、关闭mysql服务在cmd命令行输入以下命令net stop mysql或者 我的电脑右键->管理->服务&#xff0c;进入后手动关闭。2、删除MySQL服务在cmd中&#xff0c;输入sc delete mysql&#xff0c;删除服务。但是MYSQL服务只是显示禁用状态…

mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

转载&#xff1a;https://www.cnblogs.com/alvin_xp/p/4162249.html大型网站为了软解大量的并发访问&#xff0c;除了在网站实现分布式负载均衡&#xff0c;远远不够。到了数据业务层、数据访问层&#xff0c;如果还是传统的数据结构&#xff0c;或者只是单单靠一台服务器扛&am…

continue 的用户及实例

continue 跳出本次循环&#xff0c;继续下一次循环 “break”是跳出整个循环 实例1&#xff1a; for i in range(10): if i <5: continue    #这里条件是小于5&#xff0c;满足条件的就跳出了本次循环&#xff0c;不在执行print&#xff0c;所以最终打印的是5…

mysql报错注入实战_MySQL手工注入实战

实战记录&#xff0c;日本某站注入点 and 语句测试and11 返回正常&#xff0c;and2跳回首页&#xff0c;可能过滤了用 ’ 测试返回错误页面判断为注入点order by语句查询字段数测试字段数为9and 12 UNION SELECT 1,2,3,4,5,6,7,8,9报错联合查询语句&#xff0c;查询显示位2、3为…

20个简约风格网站设计作品欣赏

这篇文章收集了20个简洁清爽的网站设计作品案例&#xff0c;设计师们能够通过这些优秀的网页设计作品获得灵感&#xff0c;进而设计出更精美&#xff0c;更具有创意的网站作品&#xff0c;一起欣赏。vnsagaPure – Minimal WordPress themeAssemblydeladeeus design studioHocu…

python 股票自动交易从零开始_Python股票自动交易从零开始

课程目录1.Python股票自动交易从零开始~第一集~简介(Av24528809,P1).mp42.Python股票自动交易从零开始~第二集~安装工具包(Av24528809,P2).mp43.Python股票自动交易从零开始~第二集番外~配置Mac工作环境(Av24528809,P3).mp44.Python股票自动交易从零开始~第三集~获得股票列表-A…