Activiti工作流知识点图表总结

       Acitivi是比较早的工作流引擎,后来居上者如Flowable或者Camunda,功能以及一些特性做了一些增强,这两个都是从Activiti的某个版本分离出来,独自发展。Flowable是由Activiti的主要开发者在离开Alfresco公司后创建的。Flowable项目是在Activiti的基础上发展起来的,它继承了Activiti的许多核心特性,并引入了新的特性和改进。Camunda是从Activiti的一个分支发展而来的,它保留了Activiti的许多概念和模型,同时引入了自己的一套特性,例如对CMMN(Case Management Model and Notation)的支持。

     不过提到Activiti,也避不开jBPM,jBPM是Activiti的前身之一,Activiti的一些核心理念和设计哲学受到了jBPM的影响。尽管jBPM和Activiti后来各自独立发展,但Activiti在某些方面仍然保留了jBPM的痕迹。

     之前有两份工作中分别用到了Activiti和Flowable,Camunda还没在项目实战中用过,对Camunda的了解和学习主要来自于在广州图书馆无意中看到了一本关于Camunda的技术书籍,目前市面上也主要有Activiti和Camunda的技术书籍,Flowable相关的书籍,我在当当网和广州图书馆检索,都没有相关结果,我当时学习Activiti也是主要参考的国内的一本蓝皮的Activiti的书籍,并配有相关视频课程和源码,Flowable学习是因为有了Activiti的基础,因为Flowable和Activit有太多相同的地方了,学习起来其实很快,只需要重点看一些差异的部分就差不多了,而且国内有一个中文的翻译教程不错:Flowable BPMN用户手册

    开始总结Activiti知识

目录

1. Activiti 架构

2.BPMN2.0支持 

3. 流程定义与部署

4.执行流与任务管理

5.表单集成

6.事件与异常处理

7.业务规则引擎

8. 数据关联

 9. 服务任务与脚本任务

10. 排他网关与并行网关

11. 用户与组管理

 12.权限与安全

13. 历史数据管理

14.外部系统集成

15.API 接口

16.数据库与持久化


1. Activiti 架构
组件描述
Engine核心运行时环境,负责流程实例的创建、执行和管理。
Repository存储BPMN 2.0 XML流程定义的地方。
RuntimeService提供API来启动流程实例,查询流程实例和执行对象。
TaskService提供API来管理用户任务,如创建、查询、完成和删除。
IdentityService管理用户和组,以及它们之间的关系。
HistoryService提供API来查询历史数据,包括历史流程实例和变量。
ManagementService提供API来管理引擎的内部,如表和批次操作。
Form Engine表单渲染和管理。
Job Executor异步执行器,用于处理异步任务,如发送邮件或调用外部系统。

示例:附上mermaid(美人鱼)图及图代码,将mermaid图代码复制到draw.io工具中可以绘制出来

graph LRA[Engine] --> B[Repository]A --> C[RuntimeService]A --> D[TaskService]A --> E[IdentityService]A --> F[HistoryService]A --> G[ManagementService]A --> H[Form Engine]A --> I[Job Executor]

2.BPMN2.0支持 

BPMN(Business Process Model and Notation)2.0是一种业务流程建模的标准,它提供了一个图形化的表示方法,用于描述业务流程。Activiti完全支持BPMN 2.0规范,以下是BPMN 2.0中一些关键元素的总结:

BPMN 2.0 元素描述
Start Event流程开始的事件。
End Event流程结束的事件。
Task需要执行的工作项。
Gateway用于控制流程分支和合并的逻辑结构。
Sequence Flow表示元素之间流转的箭头。
User Task需要人工参与的任务。
Service Task调用外部服务或业务逻辑的任务。
Script Task执行脚本代码的任务。
Exclusive Gateway排他网关,基于条件分流。
Parallel Gateway并行网关,用于创建并行路径。
Sub-Process一个可重用的子流程。
Call Activity调用另一个流程定义的活动。
Boundary Event附加在流程元素上的事件,用于中断或触发特定的行为。
Intermediate Catch Event中间捕获事件,用于捕获在流程执行中发生的事件。
Intermediate Throw Event中间抛出事件,用于在流程执行中抛出事件。

示例:

graph TDA[Start Event] --> B[User Task]B --> C[Exclusive Gateway]C --> D[Task A]C --> E[Task B]D --> F[End Event]E --> F

 这是一个简单的流程,开始于一个开始事件,然后通过一个排他网关分流到两个任务中的一个,最后以结束事件结束。

3. 流程定义与部署

在Activiti中,流程定义是业务流程的模型,通常通过BPMN 2.0 XML文件来表示。部署是将流程定义添加到Activiti引擎中的过程,以下是流程定义与部署的关键概念:

概念描述
Process ModelBPMN 2.0 XML文件,定义了流程的结构和行为。
Deployment将Process Model添加到Activiti引擎的过程。
Process Definition部署后,流程模型在Activiti中的表示。
Process Instance流程定义的运行实例。
Diagram Generation从BPMN XML生成流程图。
Resource可以部署到Activiti的资源,如BPMN文件、表单文件等。

 说明:首先创建了一个BPMN XML文件作为流程模型,然后通过部署将其添加到Activiti引擎中,从而创建了流程定义。流程定义可以用于启动流程实例。同时,BPMN XML文件也可以用于生成流程图,并且作为资源被部署。

4.执行流与任务管理

执行流是Activiti中流程实例的执行路径,而任务管理涉及到用户任务的创建、分配、执行和完成。以下是执行流与任务管理的关键概念:

概念描述
Execution Flow表示流程实例中的执行路径,包括顺序流和条件流。
Execution流程实例中的一个执行实体,可以是活动、网关或事件。
Task需要用户交互的活动,如审批、填写表单等。
Task Instance任务在流程实例中的一个实例。
Task Assignment将任务分配给特定的用户或组。
Task Completion用户完成任务,如审批通过或拒绝。
Task Form与任务关联的表单,用于收集用户输入。
Task Listener任务事件的监听器,可以在任务的特定事件时执行自定义逻辑。

示例:

graph LRA[Process Instance] --> B[Execution Flow]B --> C[Execution]C --> D[Task]D --> E[Task Instance]E --> F[Task Assignment]E --> G[Task Form]E --> H[Task Listener]F --> I[User/Group]H --> J[Custom Logic]

 这个示例中,流程实例产生了执行流,执行流由执行实体组成,这些实体可以是任务。任务在流程实例中创建了任务实例,任务实例可以被分配给用户或组,并且与任务表单和监听器相关联

5.表单集成

在Activiti中,表单集成是流程中收集用户输入的重要部分。表单可以是启动流程时填写的启动表单,也可以是流程中的任务表单。以下是表单集成的关键概念:

概念描述
Start Form启动流程实例时用户需要填写的表单。
Task Form与特定用户任务相关联的表单,用于在执行任务时收集数据。
Form Field表单中的输入字段,如文本框、下拉列表等。
Form Rendering表单的呈现方式,可以是HTML、PDF或其他格式。
Form Submission用户填写完表单后提交数据的动作。
Form Data Binding表单数据与流程变量的绑定。
External Form外部表单系统,如Web表单,与Activiti集成。

示例:

graph LRA[Process Instance] --> B[Start Form]A --> C[Task]C --> D[Task Form]B --> E[Form Field]D --> EE --> F[Form Data Binding]B --> G[Form Submission]D --> GD --> H[Form Rendering]H --> I[HTML/PDF]J[External Form System] --> K[Integration]K --> A

 

这个示例中,流程实例可能包括一个启动表单和一个或多个任务表单。表单字段用于收集用户输入,并通过数据绑定与流程变量关联。用户填写并提交表单后,表单数据被用于流程执行。此外,还可以将外部表单系统与Activiti集成。

6.事件与异常处理

在Activiti中,事件处理是流程设计中的一个重要组成部分,用于响应流程执行中的特定情况。以下是事件与异常处理的关键概念:

概念描述
Start Event定义流程开始的事件,可以是无事件、消息、定时器等。
End Event定义流程结束的事件,可以是无事件、消息、错误、信号等。
Intermediate Event中间事件,可以附加到活动上,用于中断或捕捉特定的事件。
Boundary Event附加在活动边界上的事件,用于中断活动或触发特定行为。
Signal在流程中发送和接收的信号,用于同步不同的流程实例。
Message用于在流程之间或外部系统集成时交换信息的消息。
Error Event用于处理错误情况的事件,可以是中间事件或边界事件。
Escalation异常情况下的升级处理,如任务升级给更高级别的用户。
Compensation对已经完成的活动进行补偿或撤销的操作。

示例:

graph LRA[Process Instance] --> B[Start Event]A --> C[User Task]C --> D[End Event]C --> E[Boundary Event]C --> F[Intermediate Event]E --> G[Compensation]F --> H[Signal]H --> I[Signal Catch]B -.-> J[Message Start]D -.-> K[Message End]E -.-> L[Error End]C -.-> M[Escalation]

 

 这个示例中,流程实例从开始事件启动,可能包括消息开始事件或定时器开始事件。用户任务可以有边界事件附加,用于处理异常情况,如错误或信号中断。中间事件可以用于捕捉信号或抛出消息。结束事件可以是消息结束事件或错误结束事件。此外,还有补偿和升级机制来处理异常。

7.业务规则引擎

业务规则引擎(Business Rule Engine, BRE)是Activiti中的一个组件,用于将业务逻辑从流程逻辑中分离出来,使业务规则可以独立于流程模型进行管理和维护。以下是业务规则引擎的关键概念:

概念描述
Business Rules定义业务决策的逻辑,可以是简单的或复杂的。
Rule Engine用于执行业务规则的引擎。
DroolsActiviti支持的业务规则引擎之一,用于编写和执行Drools规则。
Rule TaskBPMN中的一个任务类型,用于执行业务规则。
Decision Table用于以表格形式定义业务规则的工具。
Rule Dependency业务规则之间的依赖关系。
Rule Versioning业务规则的版本管理,用于跟踪和维护不同版本的规则。

示例:

graph LRA[Business Process] --> B[Rule Engine]B --> C[Business Rules]B -.-> D[Drools]C --> E[Rule Task]E --> F[Decision Table]C --> G[Rule Dependency]G --> H[Rule Versioning]

 

这个示例中,业务流程调用业务规则引擎来执行业务规则。Drools是Activiti支持的一个业务规则引擎,可以用于编写和执行规则。业务规则通过Rule Task在BPMN模型中实现,决策表(Decision Table)是定义业务规则的一种方式。业务规则的依赖关系和版本管理对于维护和更新规则非常重要。

如果想要了解Drools在项目中的使用,可以参考我2021年写的一篇博客:SpringBoot整合Drools规则引擎动态生成业务规则_kmodulebeanfactorypostprocessor-CSDN博客 

8. 数据关联

在Activiti中,数据关联是流程模型中不同元素之间交换数据的方式。以下是数据关联的关键概念:

概念描述
Process Variables流程级别的变量,用于在流程的不同部分之间传递数据。
Local Variables局部变量,用于在单个活动中存储临时数据。
Data Objects用于在子流程中存储和传递数据的对象。
Input Parameters活动或子流程的输入参数,用于接收传递进来的数据。
Output Parameters活动或子流程的输出参数,用于将数据传递给调用者。
Data Associations定义变量、数据对象和流程元素之间的数据流。
Form Data表单提交的数据,通常与流程变量进行绑定。
Script Task使用脚本语言处理数据的特定任务类型。
 9. 服务任务与脚本任务

服务任务(Service Task)和脚本任务(Script Task)是BPMN中用于执行业务逻辑的两种任务类型。以下是服务任务与脚本任务的关键概念:

概念描述
Service Task用于执行特定的业务逻辑或服务调用的任务。
Script Task允许使用脚本语言(如JavaScript)编写和执行业务逻辑的任务。
Business Logic业务流程中的逻辑,可以是计算、数据处理或外部系统调用。
External System服务任务可能调用的外部系统或服务。
Script Language用于编写脚本任务的编程语言,如JavaScript或Python。
Task Configuration服务任务和脚本任务的配置,如调用的类或方法。

示例:

graph LRA[BPMN Process] --> B[Service Task]B --> C[Business Logic]C --> D[External System]A --> E[Script Task]E --> F[Script Language]F --> G[JavaScript/Python]B --> H[Task Configuration]H --> I[Class/Method]E --> J[Task Configuration]J --> I

 

这个示例中,BPMN流程中可以包含服务任务和服务调用的业务逻辑,服务任务可能与外部系统集成。脚本任务允许使用指定的脚本语言来实现业务逻辑,通常涉及编写和执行脚本代码。任务配置是服务任务和脚本任务执行所必需的,它定义了执行的类或方法。

10. 排他网关与并行网关

在BPMN中,网关用于控制流程的分支和合并。排他网关(Exclusive Gateway)和并行网关(Parallel Gateway)是两种常见的网关类型。以下是排他网关与并行网关的关键概念:

概念描述
Exclusive Gateway排他网关,用于在多个分支中选择一个路径继续执行。
Parallel Gateway并行网关,用于创建并行路径,所有分支同时执行。
Fork流程分支的起点,由并行网关创建。
Join流程分支的终点,由并行网关创建,合并所有并行路径。
Default Sequence Flow默认的流程流转路径,当条件不满足时所采取的路径。
Conditions用于排他网关的分支选择的条件表达式。

示例:

排他网关根据条件选择执行路径A或B,而并行网关则创建了两个并行路径C和D,它们同时执行并在另一个并行网关处合并

11. 用户与组管理

用户与组管理是Activiti中用于定义和管理用户和组的机制,它允许对用户和组进行授权和认证。以下是用户与组管理的关键概念:

概念描述
Users系统中的个人账户,用于代表个体用户。
Groups用户的集合,通常用于角色或权限的分配。
Identity Management用户和组的管理,包括创建、更新、删除用户和组。
Membership用户与组之间的关系,一个用户可以是多个组的成员。
Permissions定义用户或组可以执行的操作,如读取、写入、启动流程等。

示例:

graph TDA[Identity Management] --> B[Users]A --> C[Groups]B --> D[Permissions]C --> DE[Membership] --> BE --> CF[Process Instance] --> G[Task Assignment]G --> BG --> C

 

 这个示例中,身份管理负责管理用户和组。用户和组都有与之关联的权限,这些权限决定了它们在系统中可以执行的操作。成员关系定义了用户和组之间的关系,用户可以是多个组的成员。流程实例中的任务分配可以指定特定的用户或组来执行。

 12.权限与安全

在Activiti中,权限与安全是确保流程和数据安全的重要机制。以下是权限与安全的关键概念:

概念描述
Authentication确认用户身份的过程,确保只有授权用户才能访问系统。
Authorization确定已认证用户可以执行的操作或访问的资源的过程。
Permissions用户或组可以拥有的权限级别,如读取、写入、删除等。
Resource系统中的一个实体,如流程定义、流程实例、任务等。
Role-Based Access Control (RBAC)基于角色的访问控制,通过角色分配权限。
Attribute-Based Access Control (ABAC)基于属性的访问控制,根据用户属性授予权限。

示例:

graph TDA[Security] --> B[Authentication]A --> C[Authorization]B --> D[Users]C --> E[Permissions]E --> F[Resource]G[Groups] --> H[RBAC]I[Attributes] --> J[ABAC]H --> EJ --> E

 这个示例中,安全由认证和授权组成。用户通过认证过程确认身份,然后根据授权获得相应的权限。资源是系统中的实体,如流程实例或任务。基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)是两种常见的权限管理方式。

13. 历史数据管理

历史数据管理在Activiti中用于追踪和记录流程执行的历史信息,这对于审计和监控流程非常重要。以下是历史数据管理的关键概念:

概念描述
Historical Data流程实例、活动、任务、变量等的执行历史记录。
Process Instance History记录流程实例的创建、结束等历史信息。
Activity Instance History记录活动实例的执行历史,包括开始和结束时间。
Task Instance History记录任务实例的创建、完成、分配给用户等信息。
Variable Instance History记录变量值的变化历史。
History Level定义历史数据记录的详细程度,如不记录、记录流程实例、记录所有实例等。
History Service提供API来查询历史数据。
Audit Trail用于审计的详细历史记录,包括谁、何时、做了什么。

示例:

graph TDA[History Data Management] --> B[Historical Data]B --> C[Process Instance History]B --> D[Activity Instance History]B --> E[Task Instance History]B --> F[Variable Instance History]A --> G[History Level]G --> H[History Configuration]A --> I[History Service]I --> J[Audit Trail]

 

 这个示例中,历史数据管理涵盖了流程实例、活动实例、任务实例和变量实例的历史记录。历史级别定义了记录的详细程度,而历史服务提供了查询这些历史数据的API。审计追踪是历史数据的一部分,用于记录详细的操作日志。

14.外部系统集成

Activiti可以与外部系统集成,以便在业务流程中利用外部资源和服务。以下是外部系统集成的关键概念:

概念描述
Service Task在BPMN中用于集成外部系统的服务调用。
Message Queue用于异步通信的队列,如RabbitMQ或Kafka。
Web Service通过网络提供的服务,Activiti可以通过HTTP请求与之交互。
Database持久化存储流程数据,Activiti支持多种关系型数据库。
REST API通过RESTful服务进行集成,Activiti可以作为客户端或服务端。
Event Listener监听外部事件并触发流程中的相应动作。
Plugin扩展Activiti功能的自定义组件,可以用于特殊集成需求。

示例:

graph LRA[Activiti Engine] --> B[Service Task]A --> C[Message Queue]A --> D[Web Service]A --> E[Database]A --> F[REST API]A --> G[Event Listener]A --> H[Plugin]

 

 这个示例中,Activiti通过服务任务与外部系统集成,可以与消息队列、Web服务、数据库、REST API以及事件监听器进行交互。此外,还可以使用插件来实现特定的集成需求。

15.API 接口

Activiti提供了丰富的API接口,允许开发者以编程方式与Activiti引擎交互。以下是API接口的关键概念:

概念描述
Repository API用于管理流程定义和部署的API。
Runtime API用于管理流程实例和执行对象的API。
Task API用于管理用户任务和任务实例的API。
Identity API用于管理用户、组和权限的API。
History API用于查询历史数据的API。
Management API用于管理Activiti引擎的内部,如表和批次操作的API。
Query API提供复杂查询功能的API。
Form API用于管理表单和表单提交数据的API。

示例:

graph TDA[Activiti API] --> B[Repository API]A --> C[Runtime API]A --> D[Task API]A --> E[Identity API]A --> F[History API]A --> G[Management API]A --> H[Query API]A --> I[Form API]

 

 Activiti API分为不同的模块,每个模块负责不同的功能。开发者可以根据自己的需求选择相应的API进行流程管理、任务管理、用户管理等操作。

16.数据库与持久化

Activiti使用数据库来持久化流程实例、任务、变量、历史数据等信息。Activiti集成到项目中的时候,比如集成到SpringBoot项目,在部署工作流之后,启动项目,工作流引擎会自动创建必须的核心自带的工作流相关数据库表。

表名描述
ACT_RE_DEPLOYMENT存储部署的流程定义文件,每个部署单元在该表中有一条记录。
ACT_RE_MODEL存储模型编辑器的模型。
ACT_RE_PROCDEF存储流程定义信息。
ACT_RU_EXECUTION存储运行中的流程实例的执行流。
ACT_RU_JOB存储异步任务(如定时器、异步服务任务)。
ACT_RU_TASK存储用户任务的信息。
ACT_RU_IDENTITYLINK存储与流程元素(如任务)相关联的用户和组。
ACT_RU_VARIABLE存储运行中的流程实例的变量。
ACT_HI_PROCINST存储已结束的流程实例的历史信息。
ACT_HI_ACTINST存储活动实例的历史信息。
ACT_HI_TASK存储任务实例的历史信息。
ACT_HI_VARINST存储变量实例的历史信息。
ACT_HI_DETAIL存储历史细节信息,如流程变量的更改历史。
ACT_HI_COMMENT存储历史备注,如用户评论。
ACT_HI_ATTACHMENT存储流程中的附件信息,如用户上传的文件。
ACT_ID_GROUP存储组信息。
ACT_ID_MEMBERSHIP存储用户和组之间的关联关系。
ACT_ID_USER存储用户信息。
ACT_ID_INFO存储有关Activiti引擎的元数据信息。

最后说明:一般在项目中使用Activiti,最主要的工作是绘制工作流程BPMN图,首选是Activiti的官方explorer,集成的教程,贴上我之前写的集成安装过程:SpringBoot集成Activiti Explorer_activiti7集成 explorer2-CSDN博客 

最近几天把之前用到的一些技术及中间件知识总结一下,然后准备开始花多一些时间来学习英语口语以及总结英语单词,去年和今年感受到了行业的寒冬,找工作是真的难,希望可以好好学习英语,以后能多一点选择和机会!哎,真难!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

3.11设计模式——Visitor 访问者模式(行为型)

意图 表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义作用于这些元素的新操作。 结构 Visitor(访问者)为该对象结构中ConcreteElement(具体元素)的每一个类声明一个Visit操作,该操…

分类规则挖掘(二)

目录 三、决策树分类方法(一)决策树生成框架(二)ID3分类方法(三)决策树的剪枝(四)C4.5算法 三、决策树分类方法 决策树 (Decision Tree) 是从一组无次序、无规则,但有类别…

考研数学|李艳芳900比李林880难吗?值得做吗?

李艳芳老师比较有名的就是他的真题,900题还真是今年比较新的题集 目前,我看过900题的前两章,我觉得还是有一些亮点的: 900题第一章 与880第一章相比,两者各有千秋。880有种“一种题型一道题”(”精做一题…

普冉PY32系列(十五) PY32F0系列的低功耗模式

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

教育信息化对于教育新生态作用

现在往回观察我国的教育发展史,会发现教育的创新变革和社会的转型发展是一脉相承的。就当前,我们以人工智能技术为核心的新兴信息技术正在联合起来发力,正在引发科革命和技术产业的全面革命,这对于人类的生产生活,思维…

2024年五一杯高校数学建模竞赛(A题)|钢板切割问题 | 建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200人完成了建模与思路的构建的处理了~ 本篇文章是鹿鹿学长经过深度思考,独辟蹊径,通过路径优化解决钢板切割问题。结合贪心算法,Floyd-Warshall等多元算法…

ESD管 AZ5825-01F国产替代型号ESDA05CPX

已经有很多客户选用雷卯的ESDA05CPX替代Amazing 的 AZ5825-01F, 客户可以获得更好的价格和更快的交期,主要应用于对5V供电和4.5V供电电流较大的Vbus线路插拔保护等。 雷卯ESDA05CPX优势: 带回扫 ,钳位电压Vc 低,IPP为…

Windows11下Docker使用记录(四)

Docker使用记录&#xff08;四&#xff09; 1. container与host的文件传输2. container 与 Unity ROS setting 通讯3. container和wsl2或windows11我一直无法ping通 1. container与host的文件传输 从 container 复制文件至 host docker cp <container_name>:<file_p…

Springboot+Vue+小程序+基于微信小程序电影票网购系统

Java电影票购买管理系统&#xff0c;Maven管理工具&#xff0c;MyBatis数据库操作&#xff0c;idea平台开发&#xff0c;后台的前端为Vue&#xff0c;前台客户端为小程序&#xff0c;功能丰富&#xff0c;还有电影周边购买功能&#xff0c;请在最下方二维码处联系我即可&#x…

有种预感,今年双11可能有点冷清,你们觉得呢?

一方面是各个电商平台把促销周期拉长了&#xff0c;不再盯着11.11这一天&#xff1b;另一方面大家的荷包也不是那么鼓了&#xff0c;什么原因都懂的&#xff0c;老铁们觉得呢&#xff1f;

C# 实现格式化文本导入到Excel

目录 需求 Excel 的文本文件导入功能 范例运行环境 配置Office DCOM 实现 组件库引入 OpenTextToExcelFile 代码 调用 小结 需求 在一些导入功能里&#xff0c;甲方经常会给我们一些格式化的文本&#xff0c;类似 CSV 那样的纯文本。比如有关质量监督的标准文件&…

Apifox设置前置url的操作方法

目录 第一步 配置前置url&#xff0c;右上角设置-点击管理环境 第二步 填写请求方法和接口路径&#xff0c;切换成刚才设置的测试环境&#xff0c;点击发送 同一个域名遇到测试二个及以上接口&#xff0c;就可以通过设置前置url的方法来提升效率。操作也很简单&#xff0c;下…

【linux学习指南】linux 环境搭建

文章目录 &#x1f4dd;前言&#x1f320; 云服务器的选择&#x1f320;阿里云&#x1f320;腾讯云&#x1f320;华为云 &#x1f320;使用 XShell 远程登陆到 Linux&#x1f309;下载 XShell &#x1f320;查看 Linux 主机 ip&#x1f309; XShell 下的复制粘贴&#x1f309; …

供应链管理(SCM)把握好这5点,绝对差不到哪里去。

说到B端系统开发&#xff0c;框架是绕不开的话题&#xff0c;框架为开发者提供了诸多便利&#xff0c;同时也设置了条条框框&#xff0c;B系统工场为大家详细解读一下。 B端系统指的是面向企业或机构的后台管理系统&#xff0c;采用框架进行开发有以下优势和劣势&#xff1a; …

书生·浦语2.0(InternLM2)大模型实战--Day05 Lagent AgentLego 智能体应用搭建

视频地址&#xff1a;https://www.bilibili.com/video/BV1Xt4217728/ 课程文档&#xff1a;https://github.com/InternLM/Tutorial/tree/camp2/agent 课程作业&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/agent/homework.md 1. 概述 1.1 Lagent 是什么 La…

Spring Cloud Kubernetes 实践 服务注册发现、服务动态配置

一、Spring Cloud Kubernetes 随着云计算和微服务架构的不断发展&#xff0c;k8s 和Spring Cloud成为了当今技术领域的两大热门话题。k8s作为一个开源的容器编排平台&#xff0c;已经在自动化部署、扩展和管理方面取得了巨大的成功&#xff0c;而Spring Cloud则以其丰富的生态…

MySQL中索引的数据结构

2.3.1. 索引数据结构 索引就是能够提高查询速度的一种数据结构&#xff0c;在数据插入时就进行了排序&#xff08;会影响插入和更新的性能&#xff09;&#xff0c;索引广泛使用的是B树索引。 B树索引结构&#xff1a; 目前是基于磁盘排序效率最高的数据结构&#xff0c;树非…

Python 2 and3 兼容性问题的工具库之six使用详解

概要 在 Python 社区中&#xff0c;随着 Python 2 的逐渐退出舞台&#xff0c;许多项目需要同时兼容 Python 2 和 Python 3。为了简化这一任务&#xff0c;Python 社区开发了一个名为 six 的工具库&#xff0c;它提供了一组函数和工具&#xff0c;使得编写兼容 Python 2 和 Py…

Pandas Series的运算原来这么简单

Series的运算主要包括加法、减法、乘法和除法等基本算术运算。这些运算通常是按照索引对应计算的&#xff0c;如果两个Series的索引不同&#xff0c;则结果中对应位置将填充为NaN&#xff08;空值&#xff09;。 需要注意的是&#xff0c;在进行Series运算时&#xff0c;需要确…

文心一言 VS 讯飞星火 VS chatgpt (249)-- 算法导论18.2 2题

二、请解释在什么情况下&#xff08;如果有的话&#xff09;&#xff0c;在调用 B-TREE-INSERT 的过程中&#xff0c;会执行冗余的 DISK-READ 或 DISK-WRITE 操作。&#xff08;所谓冗余的 DISK-READ &#xff0c;是指对已经在主存中的某页做 DISK-READ 。冗余的 DISK-WRITE 是…