Spring Boot整合Camunda打造高效工作流程

🎉🎉欢迎来到我的CSDN主页!🎉🎉
🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚
👉点击这里,就可以查看我的主页啦!👇👇
尘缘的个人主页
🎁如果感觉还不错的话请给我点赞吧!🎁🎁
💖期待你的加入,一起学习,一起进步!💖💖

在这里插入图片描述

目录

  • 1 Spring Boot和Camunda的基本介绍
    • 1.1 Spring Boot的特点和优势
    • 1.2 Camunda的特点和优势
    • 1.3 工作流的基本概念和重要性
  • 2 环境搭建
    • 2.1 Spring Boot的环境搭建
    • 2.2 Camunda的环境搭建
    • 2.3 Spring Boot和Camunda的整合步骤
  • 3 实现工作流
    • 3.1 设计工作流模型
    • 3.2 定义工作流任务
    • 3.3 实现工作流引擎
    • 3.4 工作流的启动和控制
  • 4 实例演示
    • 4.1 创建一个简单的工作流示例
    • 4.2 通过Spring Boot启动工作流
    • 4.3 监控和管理工作流运行状态
      • 4.3.1 使用Camunda Modeler
      • 4.3.2 使用Spring Actuator
      • 4.3.3 使用Camunda Cockpit
  • 5 高级特性
    • 5.1 工作流的并行和分支处理
    • 5.2 工作流的异常处理和补偿机制
    • 5.3 工作流的性能优化和扩展

在现代的软件开发中,工作流管理是一个重要的组成部分。它能够帮助更好地管理和控制业务流程,提高业务效率和质量。Spring Boot是一个流行的Java开发框架,而Camunda是一个强大的工作流引擎。将Spring Boot与Camunda整合,可以实现高效、灵活且易于管理的工作流系统。

在本文中,将介绍如何使用Spring Boot和Camunda来创建和管理工作流程。将从基本的环境搭建开始,然后逐步深入到工作流的设计和实现,最后通过实例演示如何启动和控制工作流。

1 Spring Boot和Camunda的基本介绍

1.1 Spring Boot的特点和优势

Spring Boot是一种基于Spring框架的开源Java开发框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过提供一系列快速开发的工具和功能,使得开发者能够更加高效地构建和部署应用。

Spring Boot的主要特点和优势包括:

  • 简化配置:采用约定优于配置的理念,提供大量默认配置,大大减少了开发者的配置工作量。
  • 自动化管理:自动引入所需的依赖库,避免了手动管理依赖的繁琐。
  • 内嵌服务器:可以内嵌Tomcat、Jetty等服务器,无需单独部署应用,简化了应用的部署和管理。
  • 丰富的生态:与Spring生态系统完美集成,可以利用Spring提供的丰富功能和扩展性。
  • 快速构建:提供了许多快速构建项目的工具和模板,可以快速搭建和启动新的应用。

这些特点和优势使得Spring Boot成为现代Java开发的首选框架之一,特别适合于快速开发、微服务架构和云原生应用等场景。

1.2 Camunda的特点和优势

Camunda是一个开源的工作流引擎,专为企业级工作流管理和自动化而设计。以下是Camunda的一些特点和优势:

  • 强大的工作流定义:Camunda提供了符合BPMN(Business Process Model and Notation)标准的工作流定义语言,能够清晰描述复杂的业务流程。
  • 易于集成:可以轻松与现有系统整合,支持各种数据源、应用和平台的接口。
  • 可扩展性:提供丰富的API,允许开发者定制和扩展功能,满足特定业务需求。
  • 高性能执行:优化的引擎性能确保流程可高效运行,即使是在高负载环境下。
  • 可视化管理与监控:内置的管理工具可以实现流程的实时监控,同时提供直观的界面来管理流程实例。

Camunda的这些特性使其成为实现业务流程自动化的强大工具,特别适合需要高度灵活性和控制力的应用场景。

1.3 工作流的基本概念和重要性

工作流是一系列按照特定顺序组织的任务,用于完成特定的业务目标。工作流通常涉及多个参与者,包括人、系统或组织。工作流的主要目标是提高效率、减少错误并提供更好的控制和可见性。

工作流的重要性主要体现在以下几个方面:

  • 提高效率:通过自动化和优化工作流程,可以减少不必要的步骤和等待时间,提高工作效率。
  • 减少错误:工作流可以明确每个任务的执行者和执行条件,减少人为错误和遗漏。
  • 提供控制和可见性:工作流可以清晰地展示业务的执行情况,提供实时的监控和管理。
  • 灵活性和适应性:工作流可以根据业务的变化进行调整和优化,适应不同的业务需求和环境。

通过对Spring Boot和Camunda的了解,以及对工作流的基本认识,可以更好地理解如何利用这两个技术来创建和管理工作流程。接下来,将进入环境搭建的阶段,为后续的工作流设计和实现做好准备。

2 环境搭建

在进行Spring Boot与Camunda的整合之前,需要首先搭建好各自的开发环境。以下是分别针对Spring Boot和Camunda的环境搭建步骤,以及它们整合的具体操作。

2.1 Spring Boot的环境搭建

  1. 确保Java环境:安装Java Development Kit (JDK),因为Spring Boot应用需要Java运行环境。

  2. 选择IDE:选择喜爱的集成开发环境(IDE),如IntelliJ IDEA、Eclipse等。

  3. 创建项目:在IDE中创建一个新的Spring Boot项目。许多IDE都提供了创建Spring Boot项目的模板。

  4. 配置依赖:在项目的构建文件(如pom.xml或build.gradle)中添加必要的依赖项。Spring Boot Starter Web是一个常用的依赖,它包括了构建web应用所需的所有基本组件。

  5. 开发应用:编写的Spring Boot应用程序代码。Spring Boot自动配置特性将简化大部分的配置工作。

  6. 运行应用:通过IDE或者命令行工具运行Spring Boot应用。通常,一个简单的mvn spring-boot:rungradle bootRun命令就可以启动应用。

  7. 测试:利用Spring Boot内嵌的Tomcat服务器,可以方便地测试的应用。

2.2 Camunda的环境搭建

  1. 下载Camunda BPM:访问Camunda的官方下载页面(https://camunda.com/download/),选择一个适合的版本进行下载。解压下载的zip或tar包以安装Camunda BPM平台。
  2. 安装Java开发工具包(JDK):确保的计算机上安装了OpenJDK 8或更高版本。如果计划在Windows操作系统上安装,推荐使用64位版本,并保证有足够的内存,例如16GB。
  3. 配置Camunda环境:编辑Camunda的配置文件,如camunda.cfg,设置数据库连接和其他相关配置。
  4. 部署流程定义:使用Camunda Modeler设计工具来创建和编辑BPMN图表,并将这些流程定义部署到Camunda引擎中。
  5. 启动Camunda引擎:完成配置后,启动Camunda服务,这将启动流程引擎并使其开始监听流程定义和实例请求。
  6. 使用Camunda API:通过REST API或者Java API与Camunda引擎交互,管理和控制流程实例。

在整合Spring Boot和Camunda时,需要在项目的配置文件中添加Camunda的依赖项,这可以通过Maven或Gradle来完成。在Spring Boot项目中集成Camunda工作流引擎的过程需要特别注意依赖管理和配置的设置。

搭建Camunda环境的关键在于下载和安装Camunda BPM平台、确保Java环境的正确性以及配置和部署流程定义。完成这些步骤后,就可以开始在Spring Boot项目中集成和使用Camunda工作流引擎了。

2.3 Spring Boot和Camunda的整合步骤

整合Spring Boot和Camunda的步骤通常如下:

  1. 添加Camunda依赖:在Spring Boot项目的构建文件中加入Camunda的Starter依赖。

  2. 配置数据源:在Spring Boot的配置文件中(如application.properties或application.yml),配置数据源信息以连接到Camunda使用的数据库。

  3. 创建流程引擎配置:可能需要创建一个配置类,用于产生和配置Camunda的流程引擎Bean。

  4. 流程定义部署:可以在Spring Boot应用启动时自动部署流程定义到Camunda引擎中。

  5. 流程服务的集成:通过注入Camunda的引擎服务,可以在Spring管理的bean中使用流程服务。

  6. 业务逻辑实现:在Spring应用中实现具体的业务逻辑,并通过Camunda的API来管理流程。

  7. 测试和调试:运行Spring Boot应用,并通过各种测试工具进行功能和流程的测试。

完成以上步骤后,就拥有了一个整合了Spring Boot和Camunda的工作环境,接下来可以进行更复杂的流程设计和实现了。

3 实现工作流

3.1 设计工作流模型

在实现工作流之前,需要设计一个合适的工作流模型。工作流模型描述了工作流程中的活动、任务和它们之间的关系。

开始
条件判断
执行任务1
执行任务2
结束

定义了一个简单的工作流模型,包括开始、条件判断、执行任务1、执行任务2和结束等节点。根据条件判断的结果,工作流将执行不同的任务,并在完成后结束。

3.2 定义工作流任务

在设计好工作流模型后,需要为每个任务定义具体的操作。这些操作可以是函数、方法或服务调用等。以下是一个简单的Python代码,演示如何定义工作流任务:

def execute_task1():
    # 执行任务1的代码逻辑
    pass

def execute_task2():
    # 执行任务2的代码逻辑
    pass

def condition_check():
    # 条件判断的逻辑,返回True或False
    return True

def workflow():
    if condition_check():
        execute_task1()
    else:
        execute_task2()

workflow()

在这个示例中,定义了三个函数:execute_task1execute_task2condition_checkexecute_task1execute_task2分别表示执行任务1和任务2的具体操作。condition_check用于进行条件判断,返回True或False。最后,定义了一个workflow函数来组织整个工作流程,根据条件判断的结果执行相应的任务。

3.3 实现工作流引擎

实现一个工作流引擎通常涉及以下几个关键步骤:

  1. 定义流程模板:首先需要定义流程模板,这是描述工作流程结构和内容的基础。流程模板可以包含多种类型的节点,如开始节点、结束节点、任务节点等,以及它们之间的连接关系。
  2. 流程引擎的数据库设计:为了确保工作流引擎的通用性,流程数据和业务数据应该相分离。流程引擎相关的表负责记录流程的跳转和走向,而业务表单数据和附件则存储在业务表中。两者之间通过流程实例ID (processInstanceId) 和业务数据主键相互关联。
  3. 选择或开发工作流引擎:可以选择现有的工作流引擎框架,如Activiti,它支持使用BPMN2.0建模语言定义业务流程,并按照预定义的流程执行。这样可以减少因流程变更而导致的系统升级改造工作量。
  4. 实现流程控制逻辑:包括简单顺序流程、条件流程、分支/合并流程等。在条件流程中,决策节点的输出边可能包含表达式,流程将向表达式值为true的方向行进。在分支/合并流程中,分支与合并要成对出现,由合并节点判断是否具备合并条件。
  5. 提供用户界面:为用户提供一个界面来管理和监控工作流程的执行状态,以及进行流程的启动、审批等操作。
  6. 测试和优化:在实现完成后,需要进行全面的测试以确保工作流引擎的稳定性和可靠性。根据测试结果进行必要的优化。

3.4 工作流的启动和控制

一旦工作流引擎实现完成,可以通过以下方式启动和控制工作流程:

  1. 启动工作流程:用户可以通过用户界面或API调用来启动一个工作流程。这通常涉及到创建一个流程实例,并将其加入到流程引擎中。
  2. 执行任务:工作流引擎会根据流程定义自动推进流程,用户需要在适当的时机执行他们的任务,例如填写表单、审批请求等。
  3. 流程监控和管理:管理员可以通过管理界面监控工作流程的状态,并在必要时进行干预,如暂停、取消或重新分配任务。
  4. 日志和审计:记录工作流程的历史记录,以便进行审计和问题追踪。

通过这些步骤,可以实现一个完整的工作流引擎,并通过有效的控制机制来管理和执行复杂的业务流程。

4 实例演示

4.1 创建一个简单的工作流示例

让创建一个简单的工作流,包括两个任务:TaskATaskB。这个工作流将按照以下顺序执行这两个任务:

  1. 开始节点
  2. TaskA
  3. TaskB
  4. 结束节点

可以使用BPMN2.0建模语言来定义这个工作流。以下是一个简单的BPMN2.0文件:

<?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"
             targetNamespace="http://example.com/workflow">

    <process id="simpleWorkflow" name="Simple Workflow">
        <startEvent id="start" />
        <sequenceFlow id="flow1" sourceRef="start" targetRef="taskA" />
        <userTask id="taskA" name="Task A" />
        <sequenceFlow id="flow2" sourceRef="taskA" targetRef="taskB" />
        <userTask id="taskB" name="Task B" />
        <sequenceFlow id="flow3" sourceRef="taskB" targetRef="end" />
        <endEvent id="end" />
    </process>

</definitions>

4.2 通过Spring Boot启动工作流

要在Spring Boot应用程序中启动这个工作流,需要进行以下步骤:

  1. 添加必要的依赖项:在项目的pom.xml文件中添加Camunda和Spring Boot相关的依赖项。例如:
<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- Camunda Spring Boot Starter -->
    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter</artifactId>
        <version>7.15.0</version>
    </dependency>
</dependencies>
  1. 配置工作流引擎:在Spring Boot的配置文件(如application.properties)中配置工作流引擎的相关参数,例如数据库连接信息、流程文件路径等。例如:
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/camunda?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password

# 配置流程文件路径
camunda.bpm.deployment-resource=classpath:/processes/*.bpmn20.xml
  1. 启动Spring Boot应用程序:运行Spring Boot应用程序的主类,它将自动加载并启动工作流引擎。

  2. 部署和启动工作流实例:使用Camunda提供的API或用户界面,部署和启动工作流实例。例如,可以使用REST API发送POST请求到/engine-rest/deployment/create接口来部署流程文件,然后使用POST请求到/engine-rest/process-definition/key/{processDefinitionKey}/start接口来启动工作流实例。

通过这些步骤,可以在Spring Boot应用程序中成功启动和控制工作流。请确保根据实际需求进行适当的配置和调整。

4.3 监控和管理工作流运行状态

在Spring Boot和Camunda整合的环境中,监控和管理工作流运行状态可以通过多种方式实现。以下是一些关键步骤和方法来管理和监控工作流:

4.3.1 使用Camunda Modeler

  1. 使用Camunda Modeler进行流程设计:Camunda Modeler是一个基于Web的流程设计工具,可以用于创建、编辑和管理BPMN图表。通过这个工具,可以可视化地定义和修改工作流。

  2. 部署流程定义:将设计好的BPMN图表部署到Camunda引擎中,生成流程定义(Process Definition)。

  3. 启动流程实例:通过API或Modeler界面启动具体的流程实例。

  4. 访问查询和报告:Camunda提供了REST API,可以用来查询流程实例的状态、任务、变量等信息。例如,可以使用GET /engine-rest/process-instance来获取所有流程实例的信息。

  5. 任务管理:通过API或用户界面处理任务,比如领取任务、完成任务等。

  6. 事件订阅:Camunda支持事件订阅机制,允许在工作流中的特定事件发生时执行自定义逻辑。

  7. 审计和历史数据:Camunda记录了所有的操作和状态变化,可以通过API访问这些历史数据来进行审计和分析。

4.3.2 使用Spring Actuator

  1. 集成Spring Actuator:在Spring Boot项目中添加Spring Actuator依赖,以获得生产级的监控和管理功能。

  2. 配置端点:通过配置文件开启和管理各种Actuator端点,如健康检查、环境信息、应用信息等。

  3. 使用/actuator/camunda端点:Camunda为Spring Actuator提供了专门的端点来监控和管理Camunda流程引擎。可以通过/actuator/camunda来访问这些信息。

  4. 查看流程状态:使用/actuator/camunda/process-instances来获取所有流程实例的状态。

  5. 任务管理:使用/actuator/camunda/tasks来管理和查询任务。

  6. 性能指标:Spring Actuator提供了详细的性能指标收集,可以使用/actuator/metrics来访问这些指标。

4.3.3 使用Camunda Cockpit

  1. 部署Camunda Cockpit:Camunda Cockpit是一个独立的Web应用程序,用于实时监控和管理Camunda引擎。

  2. 连接Cockpit到Camunda引擎:通过配置Cockpit连接到的Camunda引擎。

  3. 实时监控:使用Cockpit的仪表板和报表功能来实时监控流程实例、任务、性能等。

  4. 管理任务:Cockpit提供了一个用户友好的界面来管理任务,包括领取、办理和完成任务。

  5. 审计和历史数据:Cockpit也提供了对历史数据的访问,用于审计和分析。

通过上述方法,可以在Spring Boot和Camunda整合的环境中有效地监控和管理工作流的运行状态。这些工具和接口提供了强大的功能,可以帮助确保工作流的正确执行,并在出现问题时快速定位和解决。

5 高级特性

5.1 工作流的并行和分支处理

Camunda工作流引擎提供了强大的并行和分支处理能力,使得复杂的业务流程可以得到有效的执行和管理。以下是一些关键点:

  • 并行网关:在BPMN 2.0中,并行网关(Parallel Gateway)用于创建并行执行的流程路径。当流程到达并行网关时,它会同时触发多个后续步骤或任务,这些步骤可以独立于彼此并行执行。
  • 分支和合并:分支(Split)和合并(Join)用于控制流程的执行路径。分支节点可以将流程分成多个独立的路径,而合并节点则确保所有路径都已完成,流程才能继续向前推进。
  • 多实例处理:Camunda支持多实例(Multi Instance)处理,这允许同时处理多个相似的任务或活动。这对于批量处理或需要并发处理多个相似对象的场景非常有用。
  • 条件表达式:通过使用条件表达式,可以在流程中实现基于特定条件的动态路由决策。这使得流程可以根据运行时的数据或状态来选择不同的执行路径。

5.2 工作流的异常处理和补偿机制

在工作流管理中,异常处理和补偿机制是确保业务连续性和数据一致性的关键。以下是Camunda在这方面提供的功能:

  • 异常捕获:Camunda允许在BPMN模型中定义异常捕获机制,以便在出现错误或异常时能够适当地响应。可以通过定义错误边界事件(Error Boundary Events)来捕获特定活动的异常,并将流程引导到特定的错误处理流程。
  • 补偿事务:为了处理可能的业务事务失败,Camunda支持补偿事务的概念。补偿事务是在原始事务失败时执行的一组操作,用于撤销或回滚先前的操作,以保持数据的一致性。
  • 事务管理:Camunda流程引擎内置了对事务的支持,确保了流程中的多个步骤可以作为一个整体进行提交或回滚。这对于维护数据完整性和处理复杂业务流程至关重要。
  • 事件处理:Camunda还提供了对事件的支持,允许在特定事件发生时触发补偿操作或其他响应措施。这为异常处理提供了更多的灵活性和动态性。

通过这些高级特性,Camunda能够支持复杂的业务流程需求,并提供强大的工具和框架来实现流程的自动化、监控和管理。

5.3 工作流的性能优化和扩展

性能优化和系统扩展是确保工作流引擎能够高效、稳定地运行,同时满足不断增长的业务需求的关键。以下是一些针对Camunda工作流引擎的性能优化和扩展策略:

性能优化

  1. 资源调整:首先,确保为Camunda引擎分配了足够的硬件资源,包括CPU、内存和存储空间,以处理流程定义、实例和相关数据。

  2. 数据库优化:数据库是工作流管理系统的核心组成部分。优化数据库配置,如索引设计、查询优化和适当的缓存策略,可以显著提高性能。

  3. 批处理和异步处理:对于大量数据处理或长时间运行的任务,使用批处理和异步处理技术可以减少对工作流引擎的直接压力。

  4. 负载均衡:在高并发场景下,使用负载均衡器将请求分散到多个Camunda引擎实例,可以提高整体的处理能力和可靠性。

  5. 流程优化:简化和优化BPMN流程模型,减少不必要的复杂性,避免过多的嵌套和循环,可以提高流程的执行效率。

  6. 缓存:适当使用缓存来存储频繁访问的数据,如用户信息、常用配置等,可以减少对数据库的访问次数。

  7. 监控和分析:使用监控工具(如Camunda Cockpit、Spring Actuator)来收集性能指标,定期分析这些数据以识别瓶颈和优化点。

扩展

  1. 集群部署:通过部署Camunda集群来提高系统的可用性和伸缩性。集群部署可以在不同的服务器上分布负载,并在一台服务器出现故障时提供备份。

  2. 插件和扩展:Camunda提供了丰富的插件机制,允许根据需要添加自定义功能或集成第三方服务。

  3. 事件和API扩展:利用Camunda的事件订阅机制和开放的API接口,可以扩展工作流的功能,如添加自定义事件处理、集成其他系统等。

  4. 多引擎协同:在大型组织中,可能需要多个工作流引擎协同工作。通过适当的设计和配置,可以实现不同引擎之间的协作和数据交换。

  5. 弹性扩展:在云环境中,可以使用弹性扩展技术(如自动伸缩组)来根据实际负载动态调整资源。

通过上述性能优化和扩展策略,可以确保Camunda工作流引擎能够满足不同规模和复杂度的业务需求,同时保持高效、稳定的运行。

在这里插入图片描述

到这里我的分享就结束了,欢迎到评论区探讨交流!!
💖如果觉得有用的话还请点个赞吧 💖

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

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

相关文章

【分布式】——分布式事务

分布式事务 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专…

STM32之HAL开发——Keil调试工具介绍

Debug介绍 在Keil工具中有许多常用的小工具&#xff0c;下面将会依次为大家介绍每个工具的用途。 命令行窗口 在窗口内可以输入一些指令&#xff0c;来进行断点设置以及删除&#xff0c;一般不常用 反汇编窗口 可以查看当前C代码的汇编指令 标志窗口 寄存器窗口 可以用来查看C…

基于nodejs+vue智能菜谱推荐系统python-flask-django-php

本文拟采用nodejs技术和express 搭建系统框架&#xff0c;后台使用MySQL数据库进行信息管理&#xff0c;设计开发的智能菜谱推荐系统。通过调研和分析&#xff0c;系统拥有管理员和用户两个角色&#xff0c;主要具备登录注册、个人信息修改、对用户管理、类型管理、菜谱信息管理…

JMeter元件作用域和执行顺序

JMeter元件作用域和执行顺序 元件的基本介绍基本元件总结 作用域的基本介绍作用域的原则元件执行顺序Jmeter第一个案例&#xff1a; Jmeter三个重要组件&#xff08;重点&#xff09;线程组特点线程组分类线程组的属性案例分析 HTTP请求案例一&#xff08;使用HTTP请求路径来传…

学习鸿蒙基础(7)

一、Watch状态变量更改通知 Watch应用于对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变&#xff0c;可以使用Watch为状态变量设置回调函数。 1、装饰器参数&#xff1a;必填。常量字符串&#xff0c;字符串需要有引号。是(string)> void自定义成员函数的方法…

西安石油大学数学建模校赛培训(2)matlab的使用

1.1.MATLAB是什么&#xff1f; MATLAB是MathWorks公司推出的一套高性能数值分析计算软件&#xff0c;其名字来源于"Matrix Laboratory"&#xff08;矩阵实验室&#xff09;的缩写。它将矩阵运算、数值分析、图形处理、编程技术等功能集成在一起&#xff0c;为科学计…

203基于matlab的曲柄滑块机构的运动学仿真分析GUI

基于matlab的曲柄滑块机构的运动学仿真分析GUI&#xff0c;包括《系统仿真与matlab》综合试题文档。分析滑块速度、角速度&#xff0c;曲轴投影长。曲柄滑块机构的动画。程序已调通&#xff0c;可直接运行。 203 曲柄滑块机构 运动学仿真分析 - 小红书 (xiaohongshu.com)

【Docker】使用 Docker 主机启动 Nginx 服务器的步骤详解

文章目录 步骤一&#xff1a;安装Docker步骤二&#xff1a;拉取Nginx镜像步骤三&#xff1a;启动Nginx容器步骤四&#xff1a;访问Nginx服务器步骤五&#xff1a;管理Nginx容器总结 在本文中&#xff0c;我们将介绍如何使用Docker在主机上启动Nginx服务器。Nginx是一个高性能的…

Qt教程 — 3.5 深入了解Qt 控件:Display Widgets部件(1)

目录 1 Display Widgets简介 2 如何使用Display Widgets部件 2.1 QLabel组件-显示图像或文本 2.2 QCalendarWidget组件-日历简单的使用 2.3 QLCDNumber组件-控件作时钟的显示 2.4 QProgressBar组件-模拟手机电池充电 2.5 QFrame组件-绘制水平/垂直线 Display Widgets将分…

【物联网】Kafka 数据采集

基础信息 组件名称 &#xff1a; kafka-connector 组件版本&#xff1a; 1.0.0 组件类型&#xff1a; 系统默认 状 态&#xff1a; 正式发布 组件描述&#xff1a;通用kafka连接网关&#xff0c;消费来自kafka的数据&#xff0c;并转发给下一个节点做相关的数据解析。 配置文…

喜报 | 聚合科技荣获江苏省数字经济学会科学技术奖

近日&#xff0c;江苏省数字经济学会公布了2023年度江苏省数字经济学会科学技术奖获奖名单。本次在全省范围内共评选出科学技术进步奖、科学技术创新奖、优秀成果奖获奖项目共计19项。“聚合数据资产服务API平台”凭借其前沿的创新性和优秀的应用前景成功获得科学技术创新奖二等…

视频推拉流EasyDSS点播平台云端录像播放异常的问题排查与解决

视频推拉流EasyDSS视频直播点播平台可提供一站式的视频转码、点播、直播、视频推拉流、播放H.265视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将无人机设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播、巡检等应用。 有用户反馈&#xff0c;项目现…

2.7、创建列表(List)

概述 列表是一种复杂的容器&#xff0c;当列表项达到一定数量&#xff0c;内容超过屏幕大小时&#xff0c;可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集&#xff0c;例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求&#xff08;如通讯录、…

Apache Spark

一、Apache Spark 1、Spark简介 Apache Spark是用于大规模数据 (large-scala data) 处理的统一 (unified) 分析引擎。 Spark官网 Spark最早源于一篇论文Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing,该论文是由加州大学柏…

Harmony OS 网络编程 实验指南

netcat简介 netcat 是什么&#xff1f; netcat是一个非常强大的网络实用工具&#xff0c;可以用它来调试TCP/UDP应用程序&#xff1b; netcat 如何安装&#xff1f; Linux上可以使用发行版的包管理器安装&#xff0c;例如Debian/Ubuntu上&#xff1a; sudo apt-get instal…

cas学习2:idea里搭建cas项目

在上篇中介绍了cas服务在tomcat中怎么启动的及某j集成cas&#xff0c;这篇讲下idea怎么集成cas成一个项目&#xff0c;为后续的定制化开发做好铺垫。 1.下载CAS 模板 Overlay Template&#xff0c;我这里使用 Apereo CAS 5.3 版本&#xff0c;JDK需要1.8 地址&#xff1a;Git…

钡铼技术R40路由器助力构建无人值守的智能化污水处理厂

钡铼技术R40路由器作为智能化污水处理厂的关键网络设备&#xff0c;发挥着至关重要的作用&#xff0c;助力构建无人值守的智能化污水处理系统。在现代社会&#xff0c;污水处理是城市环境保护和可持续发展的重要组成部分&#xff0c;而智能化污水处理厂借助先进的技术和设备&am…

微信小程序wx.navigateTo无法跳转到Component组件问题解决。(共享元素动画必备)

关于Component构造器官方是有文档说明的&#xff0c;然后官方文档内部也给出了组件是可以通过像pages一样跳转的。但是官方文档缺少了必要的说明&#xff0c;会引起wx.navigateTo无法跳转到组件问题&#xff01; 以下是官方文档截图&#xff1a; 解决方式&#xff1a; 组件创建…

4.2 循环语句loop,等差数列求和

汇编语言 1. 循环语句loop loop指令的格式是&#xff1a;loop 标号&#xff0c;CPU执行loop指令的时候&#xff0c;要进行两部操作 cx cx - 1;判断cx中的值&#xff0c;不为0则转至标号处执行程序&#xff0c;如果为0则向下执行 循环使用loop来实现&#xff0c;循环次数存…

flask_restful的基本使用

优势&#xff1a; Flask-Restful 是一个专门用来写 restful api 的一个插件。 使用它可以快速的集成restful api 接口功能。 在系统的纯api 的后台中&#xff0c;这个插件可以帮助我们节省很多时间。 缺点&#xff1a; 如果在普通的网站中&#xff0c;这个插件就没有优势了&…