activiti流程变量操作api

文章目录

    • runtimeService
    • taskService
    • delegateTask
    • 测试
      • 绘制流程图
      • 启动流程
      • runtimeService&taskService查询变量
      • runtimeService&taskService设置变量

runtimeService

// ## runtimeService操作的都是executionId
runtimeService.startProcessInstanceByKey(processDefinitionKey, vars);
runtimeService.setVariables(executionId, vars);
runtimeService.setVariablesLocal(executionId, vars)

runtimeService.getVariable(executionId, varName);
runtimeService.getVariableLocal(executionId, varName);

taskService

// ## taskService操作的都是taskId
taskService.setVariables(taskId, vars);
taskService.setVariablesLocal(taskId, vars);
taskService.complete(taskId, vars);
taskService.complete(taskId, vars, localScope);
taskService.complete(taskId, vars, transientVars);

taskService.getVariable(taskId, varName);
taskService.getVariableLocal(taskId, varName);

delegateTask

// ## delegateTask
delegateTask.setVariables(vars);
delegateTask.setVariablesLocal(vars);
delegateTask.setTransientVariables(vars);
delegateTask.setTransientVariableLocal(vars);

delegateTask.getVariable(varName);
delegateTask.getVariable(varName, fetchaAllVariables);
delegateTask.getVariableLocal(varName);
delegateTask.getVariableLocal(varName, fetchaAllVariables);
delegateTask.getTransientVariable(varName);
delegateTask.getTransientVariableLocal(varName);

// ## delegateTask.getExecution()
delegateTask.getExecution().getVariable(varName);
delegateTask.getExecution().getVariable(varName, fetchAllVariables);
delegateTask.getExecution().getVariableLocal(varName);
delegateTask.getExecution().getVariableLocal(varName, fetchAllVariables);
delegateTask.getExecution().getTransientVariable(varName);
delegateTask.getExecution().getTransientVariableLocal(varName);

delegateTask.getExecution().setVariable(varName, val);
delegateTask.getExecution().setVariable(varName, val, fetchAllVariables);
delegateTask.getExecution().setVariableLocal(varName, val);
delegateTask.getExecution().setVariableLocal(varName, val, fetchAllVariables);
delegateTask.getExecution().setTransientVariable(varName,val);
delegateTask.getExecution().setTransientVariableLocal(varName,val);

测试

绘制流程图

在这里插入图片描述
对应的bpmn.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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">
  <process id="test-var-key" name="test-var-name" isExecutable="true">
    <startEvent id="startEvent1"></startEvent>
    <sequenceFlow id="sid-F041E175-966B-40C4-900D-89EAB5B59938" sourceRef="startEvent1" targetRef="sid-3CCFB6F9-686F-4846-B401-FFF693FA07D8"></sequenceFlow>
    <userTask id="sid-3CCFB6F9-686F-4846-B401-FFF693FA07D8" name="任务1"></userTask>
    <userTask id="sid-E5660C81-BD9A-4EC3-9F33-888D59F201AE" name="任务2"></userTask>
    <sequenceFlow id="sid-3D938ADD-1267-4DB0-BBD4-8B1D6595D9CD" sourceRef="sid-3CCFB6F9-686F-4846-B401-FFF693FA07D8" targetRef="sid-E5660C81-BD9A-4EC3-9F33-888D59F201AE"></sequenceFlow>
    <sequenceFlow id="sid-857BFBEC-CB34-4BDE-A733-4C6CB09CB700" sourceRef="sid-E5660C81-BD9A-4EC3-9F33-888D59F201AE" targetRef="sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B"></sequenceFlow>
    <parallelGateway id="sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B"></parallelGateway>
    <userTask id="sid-F6E87384-711F-4244-8B2E-DBFDD7CFA922" name="任务3"></userTask>
    <sequenceFlow id="sid-9ECB4E24-0F17-4632-B5AE-6CA850CE1A83" sourceRef="sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B" targetRef="sid-F6E87384-711F-4244-8B2E-DBFDD7CFA922"></sequenceFlow>
    <userTask id="sid-6851AA5B-9C2B-4CAB-AE1A-08FB68741B19" name="任务4"></userTask>
    <sequenceFlow id="sid-132CAE85-EF06-4CFA-8E19-F159BD4FCF84" sourceRef="sid-F6E87384-711F-4244-8B2E-DBFDD7CFA922" targetRef="sid-6851AA5B-9C2B-4CAB-AE1A-08FB68741B19"></sequenceFlow>
    <sequenceFlow id="sid-B40FB063-96CF-4073-BBA5-5A51702AA83B" sourceRef="sid-6851AA5B-9C2B-4CAB-AE1A-08FB68741B19" targetRef="sid-E79A7816-1AD6-48FD-823E-30F8E162A82C"></sequenceFlow>
    <parallelGateway id="sid-E79A7816-1AD6-48FD-823E-30F8E162A82C"></parallelGateway>
    <userTask id="sid-4949FC74-BBF4-49EF-A0B0-827B4A0AFBD2" name="任务5"></userTask>
    <userTask id="sid-959DCBAC-E3A1-4B99-9272-C28796B40668" name="任务6"></userTask>
    <sequenceFlow id="sid-990CC958-7511-40FC-A8A5-D0610339CC43" sourceRef="sid-4949FC74-BBF4-49EF-A0B0-827B4A0AFBD2" targetRef="sid-959DCBAC-E3A1-4B99-9272-C28796B40668"></sequenceFlow>
    <sequenceFlow id="sid-D172FE60-24C6-416A-AA18-2CC8E22A6835" sourceRef="sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B" targetRef="sid-4949FC74-BBF4-49EF-A0B0-827B4A0AFBD2"></sequenceFlow>
    <sequenceFlow id="sid-E34141E5-CAD5-4A68-8B81-F0846E3DC0DA" sourceRef="sid-959DCBAC-E3A1-4B99-9272-C28796B40668" targetRef="sid-E79A7816-1AD6-48FD-823E-30F8E162A82C"></sequenceFlow>
    <userTask id="sid-64C2097E-106D-4E14-8BF0-8A7EDC6A470C" name="任务7"></userTask>
    <sequenceFlow id="sid-88B705AB-B1BB-46A9-AB6F-280C8647FDA7" sourceRef="sid-E79A7816-1AD6-48FD-823E-30F8E162A82C" targetRef="sid-64C2097E-106D-4E14-8BF0-8A7EDC6A470C"></sequenceFlow>
    <userTask id="sid-EDBCDF98-90B0-4A19-AA29-4A66103FA620" name="任务8"></userTask>
    <sequenceFlow id="sid-5B05CAD1-EE33-4D39-A93E-8E71BF2ACC48" sourceRef="sid-64C2097E-106D-4E14-8BF0-8A7EDC6A470C" targetRef="sid-EDBCDF98-90B0-4A19-AA29-4A66103FA620"></sequenceFlow>
    <endEvent id="sid-EF953203-812E-4AF3-B9E1-EB73FA26ADB1"></endEvent>
    <sequenceFlow id="sid-0CA0222D-FEDF-44CD-AA15-73DE43B82F3B" sourceRef="sid-EDBCDF98-90B0-4A19-AA29-4A66103FA620" targetRef="sid-EF953203-812E-4AF3-B9E1-EB73FA26ADB1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_test-var-key">
    <bpmndi:BPMNPlane bpmnElement="test-var-key" id="BPMNPlane_test-var-key">
      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-3CCFB6F9-686F-4846-B401-FFF693FA07D8" id="BPMNShape_sid-3CCFB6F9-686F-4846-B401-FFF693FA07D8">
        <omgdc:Bounds height="80.0" width="100.0" x="195.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-E5660C81-BD9A-4EC3-9F33-888D59F201AE" id="BPMNShape_sid-E5660C81-BD9A-4EC3-9F33-888D59F201AE">
        <omgdc:Bounds height="80.0" width="100.0" x="345.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B" id="BPMNShape_sid-0F1DA5F6-185E-4910-AFC5-A51C170BD35B">
        <omgdc:Bounds height="40.0" width="40.0" x="510.0" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-F6E87384-711F-4244-8B2E-DBFDD7CFA922" id="BPMNShape_sid-F6E87384-711F-4244-8B2E-DBFDD7CFA922">
        <omgdc:Bounds height="80.0" width="100.0" x="595.0" y="75.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-6851AA5B-9C2B-4CAB-AE1A-08FB68741B19" id="BPMNShape_sid-6851AA5B-9C2B-4CAB-AE1A-08FB68741B19">
        <omgdc:Bounds height="80.0" width="100.0" x="740.0" y="75.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-E79A7816-1AD6-48FD-823E-30F8E162A82C" id="BPMNShape_sid-E79A7816-1AD6-48FD-823E-30F8E162A82C">
        <omgdc:Bounds height="40.0" width="40.0" x="870.0" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-4949FC74-BBF4-49EF-A0B0-827B4A0AFBD2" id="BPMNShape_sid-4949FC74-BBF4-49EF-A0B0-827B4A0AFBD2">
        <omgdc:Bounds height="80.0" width="100.0" x="595.0" y="210.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-959DCBAC-E3A1-4B99-9272-C28796B40668" id="BPMNShape_sid-959DCBAC-E3A1-4B99-9272-C28796B40668">
        <omgdc:Bounds height="80.0" width="100.0" x="740.0" y="210.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-64C2097E-106D-4E14-8BF0-8A7EDC6A470C" id="BPMNShape_sid-64C2097E-106D-4E14-8BF0-8A7EDC6A470C">
        <omgdc:Bounds height="80.0" width="100.0" x="955.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-EDBCDF98-90B0-4A19-AA29-4A66103FA620" id="BPMNShape_sid-EDBCDF98-90B0-4A19-AA29-4A66103FA620">
        <omgdc:Bounds height="80.0" width="100.0" x="1100.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-EF953203-812E-4AF3-B9E1-EB73FA26ADB1" id="BPMNShape_sid-EF953203-812E-4AF3-B9E1-EB73FA26ADB1">
        <omgdc:Bounds height="28.0" width="28.0" x="1245.0" y="164.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-D172FE60-24C6-416A-AA18-2CC8E22A6835" id="BPMNEdge_sid-D172FE60-24C6-416A-AA18-2CC8E22A6835">
        <omgdi:waypoint x="530.5" y="197.5"></omgdi:waypoint>
        <omgdi:waypoint x="530.5" y="250.0"></omgdi:waypoint>
        <omgdi:waypoint x="595.0" y="250.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-857BFBEC-CB34-4BDE-A733-4C6CB09CB700" id="BPMNEdge_sid-857BFBEC-CB34-4BDE-A733-4C6CB09CB700">
        <omgdi:waypoint x="445.0" y="178.18450184501845"></omgdi:waypoint>
        <omgdi:waypoint x="510.4259259259259" y="178.42592592592592"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-990CC958-7511-40FC-A8A5-D0610339CC43" id="BPMNEdge_sid-990CC958-7511-40FC-A8A5-D0610339CC43">
        <omgdi:waypoint x="695.0" y="250.0"></omgdi:waypoint>
        <omgdi:waypoint x="740.0" y="250.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-3D938ADD-1267-4DB0-BBD4-8B1D6595D9CD" id="BPMNEdge_sid-3D938ADD-1267-4DB0-BBD4-8B1D6595D9CD">
        <omgdi:waypoint x="295.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="345.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-132CAE85-EF06-4CFA-8E19-F159BD4FCF84" id="BPMNEdge_sid-132CAE85-EF06-4CFA-8E19-F159BD4FCF84">
        <omgdi:waypoint x="695.0" y="115.0"></omgdi:waypoint>
        <omgdi:waypoint x="740.0" y="115.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-9ECB4E24-0F17-4632-B5AE-6CA850CE1A83" id="BPMNEdge_sid-9ECB4E24-0F17-4632-B5AE-6CA850CE1A83">
        <omgdi:waypoint x="530.5" y="158.5"></omgdi:waypoint>
        <omgdi:waypoint x="530.5" y="115.0"></omgdi:waypoint>
        <omgdi:waypoint x="595.0" y="115.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-F041E175-966B-40C4-900D-89EAB5B59938" id="BPMNEdge_sid-F041E175-966B-40C4-900D-89EAB5B59938">
        <omgdi:waypoint x="130.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="195.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-E34141E5-CAD5-4A68-8B81-F0846E3DC0DA" id="BPMNEdge_sid-E34141E5-CAD5-4A68-8B81-F0846E3DC0DA">
        <omgdi:waypoint x="840.0" y="250.0"></omgdi:waypoint>
        <omgdi:waypoint x="890.0" y="250.0"></omgdi:waypoint>
        <omgdi:waypoint x="890.0" y="198.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0CA0222D-FEDF-44CD-AA15-73DE43B82F3B" id="BPMNEdge_sid-0CA0222D-FEDF-44CD-AA15-73DE43B82F3B">
        <omgdi:waypoint x="1200.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="1245.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-5B05CAD1-EE33-4D39-A93E-8E71BF2ACC48" id="BPMNEdge_sid-5B05CAD1-EE33-4D39-A93E-8E71BF2ACC48">
        <omgdi:waypoint x="1055.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="1100.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B40FB063-96CF-4073-BBA5-5A51702AA83B" id="BPMNEdge_sid-B40FB063-96CF-4073-BBA5-5A51702AA83B">
        <omgdi:waypoint x="840.0" y="115.0"></omgdi:waypoint>
        <omgdi:waypoint x="890.5" y="115.0"></omgdi:waypoint>
        <omgdi:waypoint x="890.5" y="158.5"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-88B705AB-B1BB-46A9-AB6F-280C8647FDA7" id="BPMNEdge_sid-88B705AB-B1BB-46A9-AB6F-280C8647FDA7">
        <omgdi:waypoint x="909.5833333333334" y="178.41666666666666"></omgdi:waypoint>
        <omgdi:waypoint x="955.0" y="178.2183406113537"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

启动流程

将流程部署后,使用runtimeService.startProcessInstanceByKey(procDefKey, vars)开启流程,并且传入自定义变量:p1=p1-p1。

得到流程实例:【流程实例id: 2501 执行实例id: 2501(2501的父执行实例id是null), 2503(2503的父执行实例id是2501) 当前任务id: 2506(所属执行实例是2503)】

/**
 * 开启流程
 */
@Test
public void test_03() {
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    RuntimeService runtimeService = processEngine.getRuntimeService();
    TaskService taskService = processEngine.getTaskService();

    HashMap<String, Object> vars = new HashMap<>();
    vars.put("p1", "p1-p1");
    runtimeService.startProcessInstanceByKey("test-var-key", vars);

}

runtimeService&taskService查询变量

/**
  * 完成任务
  */
 @Test
 public void test_04() {
     ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
     RuntimeService runtimeService = processEngine.getRuntimeService();
     TaskService taskService = processEngine.getTaskService();

     // 流程实例id: 2501  执行实例id: 2501, 2503  当前任务id: 2506

     Task task = taskService.createTaskQuery().processInstanceId("2501").singleResult();


     // p1-p1
     // 先执行(先查当前执行实例):
     //      select * from ACT_RU_VARIABLE where EXECUTION_ID_ = '2503' and NAME_= 'p1' and TASK_ID_ is null
     // 再执行(再查父executionId):
     //      select * from ACT_RU_VARIABLE where EXECUTION_ID_ = '2501' and NAME_= 'p1' and TASK_ID_ is null
     System.out.println(runtimeService.getVariable(task.getExecutionId(), "p1"));

     // null
     // 只执行(只查当前执行实例):
     //      select * from ACT_RU_VARIABLE where EXECUTION_ID_ = '2503' and NAME_= 'p1' and TASK_ID_ is null
     System.out.println(runtimeService.getVariableLocal(task.getExecutionId(), "p1"));


     // p1-p1
     // 先执行(先查当前taskId):
     //      select * from ACT_RU_VARIABLE where TASK_ID_ = '2506' and NAME_= 'p1'
     // 再执行(再查当前taskId所属exectionId):
     //      select * from ACT_RU_VARIABLE where EXECUTION_ID_ = '2503' and NAME_= 'p1' and TASK_ID_ is null
     // 再执行(再查当前taskId所属exectionId的父executionId):
     //      select * from ACT_RU_VARIABLE where EXECUTION_ID_ = '2501' and NAME_= 'p1' and TASK_ID_ is null
     System.out.println(taskService.getVariable(task.getId(), "p1"));

     // null
     // 只执行(只查当前taskId):
     //      select * from ACT_RU_VARIABLE where TASK_ID_ = ? and NAME_= ?
     System.out.println(taskService.getVariableLocal(task.getId(), "p1"));

 }

runtimeService&taskService设置变量

@Test
public void test_05() {

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    
    RuntimeService runtimeService = processEngine.getRuntimeService();
    
    TaskService taskService = processEngine.getTaskService();

    Task task = taskService.createTaskQuery().processInstanceId("2501").singleResult();


    // 执行:(这里插入的是父执行实例的executionId: 2501)
    //    insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    //                                 5001  1    string e1     2501           2501           null                                      e1-e1
    runtimeService.setVariable(task.getExecutionId(), "e1", "e1-e1");

    // 执行:(这里插入的是当前执行实例的executionId: 2503)
    //    insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    //                                 7501 1,    string,e11,   2501,          2503(String),  null,                                     e11-e11(String)
    runtimeService.setVariableLocal(task.getExecutionId(), "e11", "e11-e11");

    // 执行:(这里居然没有插入taskId, 而是插入了procInstId和executionId, 并且其中的executionId是父executionId, 效果与runtimeService.setVariable(task.getExecutionId(), "e1", "e1-e1");一致)
    //    insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    //                                10001,1     string,t1,    2501,          2501,          null,                                     t1-t1
    taskService.setVariable(task.getId(), "t1", "t1-t1");


    // 执行:(这里插入了taskId, 并且插入了对应的procInstId和当前执行实例executionId)
    //    insert into ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    //                                 12501,1    string,t11,   2501,          2503,          2506,                                     t11-t11
    taskService.setVariableLocal(task.getId(), "t11", "t11-t11");

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ACL权限

ACL权限 目录&#xff1a; 1. 什么是ACL 2. 操作步骤 1. 什么是ACL ACL是Access Control List的缩写&#xff0c;即访问控制列表 每个项目成员在有一个自己的项目目录&#xff0c;对自己的目录有完全权限 项目组中的成员对项目目录也有完全权限 其他人对项目目录没有…

互联网时代的身份标识有哪些?

在互联网时代&#xff0c;我们的在线活动几乎都与IP地址相关。无论是浏览网页、观看视频&#xff0c;还是进行在线交易和沟通交流&#xff0c;我们的设备都会分配到一个独特的IP地址。然而&#xff0c;你可能并未意识到的是&#xff0c;IP地址不仅标识了我们在网络中的身份&…

MySQL 索引相关问题,建议搭建好环境,真实操作一下索引应用到的各种场景

文章目录 什么是 B-tree 和 Btree &#xff1f;B-Tree 和 BTree的区别&#xff1f;MySQL 联合唯一索引是BTree&#xff0c;会带来什么原则&#xff1f;主键索引和单字段唯一索引有什么区别吗什么是 聚簇索引和非聚簇索引 &#xff1f;创建一个三百万数据量的表格&#xff0c;方…

HCIP-七、IS-IS 综合实验

七、IS-IS 综合实验 实验拓扑实验需求及解法1.如图所示&#xff0c;配置所有路由器的接口IP地址。2.运行IS-IS&#xff0c;进程号13.IS-IS优化4.路径优化 实验拓扑 实验需求及解法 本实验模拟IS-IS综合网络&#xff0c;完成以下需求&#xff1a; 1.如图所示&#xff0c;配置所…

Acrel-2000电力监控系统在上海大世界保护修缮工程项目中的应用

摘要&#xff1a;安科瑞生产厂家1876150/-6237黄安南 介绍上海大世界电力监控系统&#xff0c;采用智能电力仪表采集配电现场的各种电参量和开关信号。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-2000型电力监控系统实现…

Matplotlib图形配置与样式表_Python数据分析与可视化

Matplotlib图形配置与样式表 配置图形修改默认配置rcParams样式表 Matplotlib的默认图形设置经常被用户诟病。虽然2.0版本已经有了很大改善&#xff0c;但是掌握自定义配置的方法可以让我们打造自己的艺术风格。 配置图形 我们可以通过修个单个图形配置&#xff0c;使得最终图…

搜索引擎语法

演示自定的Google hacking语法&#xff0c;解释含意以及在渗透过程中的作用 Google hacking site&#xff1a;限制搜索范围为某一网站&#xff0c;例如&#xff1a;site:baidu.com &#xff0c;可以搜索baidu.com 的一些子域名。 inurl&#xff1a;限制关键字出现在网址的某…

【数据分享】我国12.5米分辨率的坡度数据(免费获取)

地形数据&#xff0c;也叫DEM数据&#xff0c;是我们在各项研究中最常使用的数据之一。之前我们分享过源于NASA地球科学数据网站发布的12.5米分辨率DEM地形数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;这个DEM数据的优点是精度高。 基于DEM地形数据&…

【OpenGauss源码学习 —— 执行算子(Merge Join 算子)】

执行算子&#xff08;Merge Join 算子&#xff09; 连接算子Merge Join 算子ExecInitMergeJoin 函数MergeJoin 结构体 ExecMergeJoin 函数MergeJoinState 结构体 ExecEndMergeJoin 函数 总结 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重…

阿里云windwos 安装oracle数据库,外部用工具连接不上,只能在服务器本机通过127.0.0.1 连接

1. 首先检查阿里云服务器安全组端口是否开放 oracle 数据库端口 2. 其次找到oracle 安装的目录&#xff0c;打开这俩个文件&#xff0c;将localhost 修改为 服务器本机名称 3.重启oracle 监听服务&#xff0c;就可以连接了

新手如何买卖基金,基金投资基础入门

一、教程描述 本套基金教程&#xff0c;大小2.50G&#xff0c;共有13个文件。 二、教程目录 第01课&#xff1a;基金入门&#xff0c;学会投资其实不难.mp4 第02课&#xff1a;基金分类&#xff0c;琳琅满目清清楚楚.mp4 第03课&#xff1a;以稳取胜&#xff0c;稳健基金稳…

程序的编译与链接(详解)

程序的编译与链接 本章内容如下&#xff1a; 1:程序的翻译环境与执行环境的介绍 2:详解程序的翻译环境(编译链接) 2.1预处理阶段干了啥2.2编译阶段干了啥2.3汇编阶段干了啥2.4链接阶段干了啥 3:预处理详解 预定义符号的介绍#define 的介绍(宏与标识符号)#与##的介绍宏与函数…

【MinIO】几个有用的方法

在windows总安装Minio 这是一篇不错的安装指南 进入网址 在Windows安装时&#xff0c;选择相应的exe文件下载&#xff0c;下载到本地后&#xff0c;使用如下的命令即可在前台启动&#xff1a; minio.exe server D:\your_path 或者将该路径写进环境变量的path中&#xff0c;…

怎么当代课老师教学生

老师朋友们&#xff0c;有没有帮忙当过代课老师呢&#xff1f;或者&#xff0c;没当过的老师是不是对这种职业充满了好奇&#xff1f;让我来分享一下&#xff0c;当代课老师的日常是什么样的吧&#xff01; 备课 说起备课&#xff0c;那可是个大工程&#xff01;不过&#xff…

微信消息推送说明

1 打开任务清单 2 编辑任务清单设置 名字解释 姓名&#xff1a;微信名字 内容&#xff1a;要发送消息 定时&#xff1a;从几点开始发送 每隔几分钟&#xff1a;每隔几分钟重复发送一次 重复次数&#xff1a;每隔几分钟重复发送几次 响玲&#xff1a;定时语音电话&#x…

掌握高效性能测试技能:JMeter基础入门!

一、JMeter基础 A、JMeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。 Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and …

Unity UGUI的自动布局-LayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件&#xff1f; HorizontalLayoutGroup是Unity UGUI中的一种布局组件&#xff0c;用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小&#xff0c;使它们…

机器人规划算法——movebase导航框架源码分析

这里对MoveBase类的类成员进行了声明&#xff0c;以下为比较重要的几个类成员函数。 构造函数 MoveBase::MoveBase | 初始化Action 控制主体 MoveBase::executeCb收到目标&#xff0c;触发全局规划线程&#xff0c;循环执行局部规划 全局规划线程 void MoveBase::planThread |…

[黑马程序员SpringBoot2]——原理篇1

目录&#xff1a; bean的加载方式(—)bean的加载方式(二)bean的加载方式(三)FactoryBeanproxyBeanMethod属性bean的加载方式(四)bean的加载方式(五)bean的加载方式(六)bean的加载方式(七)bean的加载方式(八)bean加载控制&#xff08;编程式)bean加载控制&#xff08;注解式)be…

前缀和+哈希表——560. 和为 K 的子数组

文章目录 &#x1fa90;1. 题目&#x1f31f;2. 算法原理⭐解法一&#xff1a;暴力枚举⭐解法二&#xff1a;前缀和哈希表 &#x1f31e;3. 代码实现 &#x1fa90;1. 题目 题目链接&#xff1a;560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组…