当前位置: 首页 > news >正文

【2024】Camunda常用功能基本详细介绍和使用-上 (1)

这里写目录标题

  • 前言
  • 一、 介绍
    • 基本概念介绍
      • 1.BPMN
      • 2.Form
      • 3.DMN
  • 二、Camunda使用
    • 1、下载安装
      • 1.1、camunda-modeler:BPMN绘画工具
      • 1.2、camunda-bpm-run:web端控制页面
    • 2、创建流程
      • 2.1、部署一个基础流程
      • 2.2、添加用户任务
        • 2.2.1、绑定表单
          • 2.2.1.1、Generated Task Forms
          • 2.2.1.2、Camunda Forms方式
            • 创建form表单
            • 绑定form表单
        • 2.2.2提交
      • 2.3、给流程添加活动
        • 2.3.1、curl添加
        • 2.3.2、REST Client
      • 2.4、处理用户活动
      • 2.5、添加用户
        • 2.5.1、继续处理用户活动
      • 2.6、添加外部活动
      • 2.7、添加网关

前言

该专栏主要为介绍camunda的学习和使用

  • 🍅【2024】Camunda常用功能基本详细介绍和使用-下(1)
  • 🍓【2024】Camunda常用功能基本详细介绍和使用(业务决策和定时事件)-下(2)

在学习camunda之前我们首先得先了解目前主流的一些工作流引擎,目前市面上几个主要的工作流引擎jBPM7、Activiti7、Flowable6.5、Camunda7主要都是由jBPM发展而来的。因此在使用上也会大致相同,基本上熟悉了一个去学习其他的难度也都相对会比较低。
在这里插入图片描述

以下是jBPM、Activiti、Flowable和Camunda四个主流工作流引擎:

特性jBPMActivitiFlowableCamunda
许可证ASL(Apache软件许可证)Apache License 2.0Apache License 2.0Apache License 2.0
社区活跃的社区,但正在增长庞大的社区,但是有分支与Flowable围绕具体问题的活跃社区非常活跃且强有力的社区
工作流定义BPMN、DMNBPMNBPMNBPMN、DMN
建模工具jBPM DesignerActiviti DesignerFlowable Designer (基于Eclipse)在Cockpit内嵌包含模型
任务管理高级的任务管理能力任务服务API,人类任务任务服务API,任务身份确认人类任务,案件管理
流程执行状态JPA Hibernate内存执行,自定义持久化内存执行,JPA内存执行,JPA
集成Web Services,Seam,REST,JEEREST,Spring,JEE集成Spring,REST,微服务Spring,Spring Boot,REST, BPMN IO
决策管理Drools引擎(业务规则)--DMN(决策表和决策树)
流程可见性和审计审计日志,BPMN执行视图运行时服务和历史服务审计日志路径Cockpit, Operate
可扩展性设计为大型企业应用支持集群和可扩展性可扩展,分布式执行可扩展性,支持集群
用户任务交互通过BPM控制台与任务表单任务列表,表单API任务列表,表单API任务列表,易用表单,DMN表单
决策模型DMN 1.1--DMN 1.1
案例管理支持 CMMN有限的(通过Activiti Explorer)-CMMN 1.1
扩展性插件,外部任务,工作项变量扩展,任务处理器Delegate,听众Camunda spin,Delegate,CAM修复工具
对其他技术的支持有限的强大的支持,库,连接器
商业支持Red Hat提供支持多个提供商Flowable提供支持企业支持
学习曲线中等至陡峭中等中等中等至陡峭
使用场景大型企业,复杂决策管理要求柔性业务流程自动化柔性业务流程自动化复杂流程,决策支持要求较高
最新发布版本(截至2023年)7.x7.x(具体版本可能变化)6.x7.x(开源) / 8.x(商业)
  • 所有的这些引擎都是基于Java开发的,这使得它们对Java环境下的工作流程管理非常友好。
  • Activiti和Flowable的关系:Flowable是Activiti的分支项目,因此它们在很多方面有相似点。
  • jBPM 是集成了决策管理和复杂业务流程的综合解决方案,Red Hat提供支持,吸引大型企业。
  • Camunda 因其通过DMN提供的强大的决策管理支持而与众不同。
  • 不同的引擎在流程执行方式上有所区别;一些引擎重点是内存执行,而其他提供高级的持久性选项。

在选择上,普通使用其实功能都差距不大,就可能一些内部细节上会有区别,但在开源版本使用上Camunda相对会更新的频率高一些,并且工具相对也齐全一些,所以优先推荐使用Camunda

一、 介绍

Camunda在发展上目前主要是分为了两个主要版本7.x和8.x,7.x的为开源版本,目前更新到最新的是7.23,本教程介绍使用的是7.20,也是相对比较新的版本,不同的版本之间会有一定的差异。测试过几个版本,相对这个会比较好用一点。

常用几个官方的网站

  • 开源版官方操作手册:https://docs.camunda.org/get-started/quick-start/
  • camunda-modeler和camunda-bpm下载地址:https://downloads.camunda.cloud/release/
  • 官方示例git仓库:https://github.com/camunda/camunda-bpm-examples

基本概念介绍

1.BPMN

BPMN(Business Process Model and Notation)是业务流程模型与标记法,是一组由对象管理组织(Object Management Group, OMG)发布的图形符号,用来直观地表示业务流程。它通过标准化的图形表示法,使业务流程能够在不同组织和技术领域之间得到一致理解。目前工作流使用的都是这个2.0版本的一个标准。
基本常用符号

  • 事件Event
    在这里插入图片描述

  • 活动Activity
    活动是工作或任务的一个通用术语,一个活动可以是一个任务,还可以是一个当前流程的子处理流程;其次,你还可以为活动指定不听的类型
    在这里插入图片描述

  • 网关GateWay
    网关用来处理决策,有几种常用的网关
    在这里插入图片描述

2.Form

在Camunda中Form主要表示表单,主要用于以下几个方面:

  • 用户任务(User Tasks) :当工作流程中需要用户输入或交互时,通过表单可以获取这些信息。
  • 表单数据的流转:表单数据可以与流程变量进行映射。提交表单后,数据可以自动填入流程变量,或者通过Variables API进行后续处理。
  • 校验和逻辑:Camunda表单支持复杂的表单验证逻辑和条件渲染。这意味着表单中的字段可以根据用户的输入或外部条件显示或隐藏、启用或禁用。

3.DMN

Camunda集成了DMN来管理业务决策,这有助于:

  • 决策表(Decision Tables) :决策表是DMN的核心概念,它以表格形式清晰直观地展示了各种决策规则。用户可以定义输入条件、决策输出以及相关的规则,当输入条件满足规则时,决策输出会得到相应的值。
  • 决策树和流程图:DMN也支持基于决策树和流程图进行建模,适用于更加复杂的决策逻辑,其中实例化的路径可以可视化地表示出来。
  • 决策服务:Camunda可以将DMN决策表作为服务部署,使其可以在流程中使用,或者通过REST API被调用。这意味着决策可以独立于流程存在,增加了决策的重用性和保持性。
  • 与流程整合:DMN模型可以无缝地集成到Camunda的工作流程中。这意味着在流程中的任意一步都可能需要一个业务决策,其中决策的结果直接影响流程的流向或执行任务。
  • 决策自动化:内置的DMN引擎能够自动执行决策逻辑,这大大提高了决策的执行效率并减少了人工判断的错误。

二、Camunda使用

1、下载安装

我们总共需要安装两个东西camunda-modeler和camunda-bpm。可以通过上面的地址看不同的版本进行选择,或者直接通过下面的地址下载和我一样的。

1.1、camunda-modeler:BPMN绘画工具

  1. 下载安装
    🚀下载地址。根据自己主机环境选择不同的版本安装
    在这里插入图片描述
    mac的直接下载.dmg即可
    在这里插入图片描述
    如果是windows则下载win的压缩包,解压后,点击camunda-modeler.exe文件即可打开

  2. 打开后选择中间的Camunda7的BPMN digagram进行创建一个.bpmn文件
    在这里插入图片描述

  3. 功能区介绍
    在这里插入图片描述

1.2、camunda-bpm-run:web端控制页面

  1. 下载安装
    🚀下载地址
    在这里插入图片描述

  2. 介绍
    解压后,可以使用vs code查看具体的结构.sh的是linux和mac的可执行文件,.bat的是win的。
    resources目录是存放bpmn文件的
    userlib目录是存放jar包的,如果有自定义的jar包可以放那

    在这里插入图片描述

  3. 添加配置
    在default.yml文件添加下面配置,7.20之后必须要设置历史生存时间,可以通过配置文件设置后,就不用每个bpmn文件单独配置了。

    
    camunda.bpm:
    # 历史生存时间generic-properties:properties:historyTimeToLive: P30D
    

    在这里插入图片描述

  4. 启动
    通过对应的start文件启动,进入下面页面表示启动成功
    在这里插入图片描述

  5. 登陆
    把路径后缀清楚掉会重定向到登陆页面,可以直接通过账号密码登陆,默认的账号密码就是default.yml文件中配置的demo/demo,可以自己改为自己想要的。
    在这里插入图片描述
    点击登陆后,会先有一个弹窗然后随便点一个,就可以进入主页了
    在这里插入图片描述

2、创建流程

模拟创建一个请假流程,一步步实现复制功能

2.1、部署一个基础流程

  1. 先通过开始事件添加一个活动
    在这里插入图片描述

  2. 在通过这个活动添加一个结束时间
    在这里插入图片描述

  3. 添加名称
    双击符号,或者通过右边的name添加
    在这里插入图片描述
    同理,后面两个也一样
    在这里插入图片描述

  4. 上传
    点击空白区域,添加流程ID,
    在这里插入图片描述
    然后在点击下面的小火箭发送数据到web端,第一次需要先把文件进行本地保存。发送到地址ip就是你web服务的ip
    在这里插入图片描述

  5. 查看
    然后回到web端,点击Cockpit查看流程
    在这里插入图片描述
    在点击Process Definitions查看流程列表在这里插入图片描述

查看列表,默认有两个测试的数据,第一条就是刚刚新增的在这里插入图片描述

双击后就可以看到对应的流程图,左边为流程图的信息。
在这里插入图片描述

2.2、添加用户任务

直接给活动图标指定为用户任务
在这里插入图片描述
给这个活动指定处理的人员
在这里插入图片描述

2.2.1、绑定表单
2.2.1.1、Generated Task Forms

直接添加字段绑定,先在Forms选择 Generated Task Forms类型,然后在再下面flelds添加字段,我这分别添加了leadAudit、leadDiscuss两个字段

在这里插入图片描述
在这里插入图片描述

重新提交查看

2.2.1.2、Camunda Forms方式
创建form表单
  1. 点击右上角添加一个form表单文件
    在这里插入图片描述

  2. 在从左边添加输入方式
    分别选择一个test的输入框和一个一个checkbox复选框
    在这里插入图片描述

  3. 配置输入框
    添加配置 在这里插入图片描述

  4. 配置复选框
    复选框也一样,复选框勾选表示true,不勾选表示false
    在这里插入图片描述

  5. 保存
    点击空白地方,给这个form添加一个id,这个id用作给bpmn做绑定的
    在这里插入图片描述

绑定form表单

在新添加的用户活动里面设置如图,form reference表示 form表单的id

在这里插入图片描述

2.2.2提交

如果流程里面有活动绑定了form表单需要把表单绑定一起提交
在这里插入图片描述
提交后就可以重新回到web页面刷新页面,选择最新的版本即可
在这里插入图片描述

2.3、给流程添加活动

2.3.1、curl添加

直接在命令行输入

curl -H "Content-Type: application/json" -X POST -d '{"variables": {"duration": {"value":2,"type":"integer"}, "reason": {"value":"休假"}, "name": {"value":"lisi"} } }' http://localhost:8080/engine-rest/process-definition/key/businessLeave/start

返回如下表示成功
在这里插入图片描述

2.3.2、REST Client

推荐使用,一般我们也是会使用REST api接口方式添加。
添加的字段没要求限制,只要格式正确,可以给这个流程随意添加字段;businessLeave表示流程的key。
在这里插入图片描述
可以看到流程被加入了两个任务。
在这里插入图片描述
双击即可查看任务详情,查看添加到字段变量数据
在这里插入图片描述

2.4、处理用户活动

  1. 点击taskKlist
    在这里插入图片描述
  2. 进入taskKlist,处理活动
    在这里插入图片描述
  3. 输入内容,点击complete提交

在这里插入图片描述

  1. 流程查看任务
    在回到流程,查看刚刚那个任务就已经执行到下一步了
    在这里插入图片描述
    点击进入详情,可以看到经理审核输入的变量也可以查看到
    在这里插入图片描述
    在回到taskKlist,处理总经理用户活动,发现不行,因为处理用户指定的是zhangsan,所以需要添加一个zhangsan用户来处理
    在这里插入图片描述

2.5、添加用户

  1. 回到首页点击admin
    在这里插入图片描述

  2. 在点击new user
    在这里插入图片描述

  3. 添加基础信息注册
    在这里插入图片描述

  4. 注册成功后即可看到多了刚刚注册的
    在这里插入图片描述

  5. 再点击id进入详情选择group,点击右上角的add,绑定用户组
    在这里插入图片描述

  6. 点击add 即可
    在这里插入图片描述

2.5.1、继续处理用户活动
  1. 重新登陆zhangsan用户,即可对刚刚不能处理的活动进行处理
    在这里插入图片描述
  2. 处理完成即结束了,刚刚的任务就表示执行完成了。
    在这里插入图片描述

2.6、添加外部活动

  1. 添加活动,指定为service task
    在这里插入图片描述

  2. 配置外部活动
    通过implementation配置,再指定tpoic名称,提供给外部监听这个tpoic
    在这里插入图片描述

  3. 创建一个maven项目
    添加依赖

    <!-- 版本为自己wab端的版本--><dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-external-task-client</artifactId><version>7.20.0</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency>
    

    添加监听的java代码

    import org.camunda.bpm.client.ExternalTaskClient;public class ChargeCardWorker {public static void main(String[] args) {ExternalTaskClient client = ExternalTaskClient.create().baseUrl("http://localhost:8080/engine-rest").asyncResponseTimeout(10000) // long polling timeout.build();// subscribe to an external task topic as specified in the processclient.subscribe("archivedFile").lockDuration(1000) // the default lock duration is 20 seconds, but you can override this.handler((externalTask, externalTaskService) -> {// Put your business logic here// Get a process variableString reason = externalTask.getVariable("reason");Integer duration = externalTask.getVariable("duration");String name = externalTask.getVariable("name");String leadDiscuss = externalTask.getVariable("leadDiscuss");String generalManager = externalTask.getVariable("generalManager");System.out.println("===========================");System.out.println("请假人:"+name);System.out.println("请假理由:"+reason);System.out.println("请假时长:"+duration+"天!");System.out.println("经理评价:"+leadDiscuss);System.out.println("总经理评价:"+generalManager);externalTaskService.complete(externalTask);}).open();}
    }
    
  4. 重新提交流程
    重新提交后选择最新的版本,再通过postman,提交添加一个任务在这里插入图片描述

  5. 把任务提交到外部任务这一步,启动服务
    在这里插入图片描述

  6. 查看外部服务
    可以看到我们前面活动的数据和操作,打开断点让它跑完则执行完毕了;

2.7、添加网关

  1. 添加一个普通的排他网关
    在这里插入图片描述

  2. 添加条件判断
    在上面的路径,name改一下,便于查看,在添加一个条件判断表达式,
    我们在一些其他的地方都可以通过${}表达式的方式获取流程中的任务传递的变量
    在这里插入图片描述
    方式同上,修改变量即可
    在这里插入图片描述

  3. 动态设置处理用户
    在这里插入图片描述

  4. 提交添加任务
    会根据时长去判断路由往哪走
    在这里插入图片描述
    经理审核通过后,我们就可以看到,因为请假时间是5天,所以就会走到总经理审核的地方去。
    在这里插入图片描述

相关文章:

【2024】Camunda常用功能基本详细介绍和使用-上 (1)

这里写目录标题 前言一、 介绍基本概念介绍1.BPMN2.Form3.DMN 二、Camunda使用1、下载安装1.1、camunda-modeler&#xff1a;BPMN绘画工具1.2、camunda-bpm-run&#xff1a;web端控制页面 2、创建流程2.1、部署一个基础流程2.2、添加用户任务2.2.1、绑定表单2.2.1.1、Generated…...

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 &#xff08;1&#xff09;什么是正则表达式 &#xff08;2&#xff09;它的结构及使用 示例&#xff1a; 1.字符 . &#xff08;←这里有个小点哦&#xff09; 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d &#xff08;3&#xff09;补充&#xff…...

使用create-react-app创建工程时报错处理

1&#xff1a;全局安装create-react-app npm install -g create-react-app 2&#xff1a;切换到项目要创建的目录下 cd /d G:\vsCode_project\react 3&#xff1a;使用脚手架命令创建工程 create-react-app 项目名 项目名命名要遵循npm包命名规范&#xff1a;数字、小写字…...

C# 探险之旅:第三十五节 - 类型class之抽象类 (Abstract Class) 和 抽象方法 (Abstract Method)

&#x1f44b; 嗨&#xff0c;勇敢的探险家们&#xff01;欢迎再次踏上C#的神秘之旅。今天&#xff0c;我们要进入一片既神秘又充满无限可能的领域——抽象类与抽象函数的奇幻森林。想象一下&#xff0c;你是一名勇敢的骑士&#xff0c;要在这片森林里寻找传说中的“编程之宝”…...

qt-C++笔记之父类窗口、父类控件、对象树的关系

qt-C笔记之父类窗口、父类控件、对象树的关系 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QWidget 及开发方式…...

Cisco Packet Tarcer配置计网实验笔记

文章目录 概要整体架构流程网络设备互连基础拓扑图拓扑说明配置步骤 RIP/OSPF混合路由拓扑图拓扑说明配置步骤 BGP协议拓扑图拓扑说明配置步骤 ACL访问控制拓扑图拓扑说明配置步骤 HSRP冗余网关拓扑图拓扑说明配置步骤 小结 概要 一些环境配置笔记 整体架构流程 网络设备互连…...

使用torch模拟 BMM int8量化计算。

使用torch模型BMM int8计算。 模拟&#xff1a;BMM->softmax->BMM 计算流程 import torch import numpy as np torch.manual_seed(777) def int8_quantize_per_token(x: torch.Tensor, axis: int -1, attnsFalse):if x.dtype ! torch.float32:x x.type(torch.float32)…...

【FreeMarker】实现生成Controller根据模板勾选的内容查询

需求&#xff1a;根据模板列表勾选的字段查询列表数据 FreeMarker代码&#xff1a; /*** 分页列表查询** param ${entityName?uncap_first}* param pageNo* param pageSize* param req* return*///AutoLog(value "${tableVo.ftlDescription}-分页列表查询")ApiOp…...

深入理解 XPath:XML 和 HTML 文档的利器

XPath&#xff08;XML Path Language&#xff09;是一种用于在 XML 和 HTML 文档中定位节点的语言。它常用于 XML 解析、Web 数据抓取&#xff08;如 Selenium 或 Scrapy&#xff09;以及配置文件解析。本文将带你深入了解 XPath 的语法、功能及其在实际中的应用。 目录 一、什…...

DDR5 中的数据反馈判决均衡(DFE):全面解析与展望

目录 一、引言二、DFE原理三、DFE架构四、实现方案五、测试方法六、DFE效果七、成本与收益八、具体应用九、技术发展趋势十、参考文献 一、引言 DDR5 作为新一代内存标准&#xff0c;其中的数据反馈判决均衡&#xff08;DFE&#xff09;技术更是引人注目。DFE即判决反馈均衡&a…...

Axure高保真数据可视化大屏图表组件库

推出了一款高保真数据可视化大屏图表组件库&#xff0c;旨在为用户提供丰富的图表类型&#xff0c;使数据呈现更加直观、生动。本文将详细介绍该组件库中的各类图表元件&#xff0c;包括面积图、折线图、柱状图、条形图、圆环图、雷达图、仪表图以及综合类图表&#xff0c;以满…...

100个问题学 langchain 入门 (1/10)

100个问题学 langchain 入门 (1/10) 文章目录 100个问题学 langchain 入门 (1/10)前言**问题 1** 什么是 langchain&#xff0c;解决什么问题&#xff1f;**问题 2** LangChain 的核心组件有哪些&#xff1f;请列举并简要说明每个组件的作用。**问题 3** 在 LangChain 中&#…...

0001.基于springmvc简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习&#xff0c;虽然版本比较老但是部署方便&#xff0c;tomcat环境即可启用&#xff1b;代码简洁&#xff0c;前后端代码提供可统一学习&#xff1b;祝愿您能成尽快为一位合格的程序员&#xff0c;愿世界没有BUG; …...

每日一题 326. 3 的幂

326. 3 的幂 简单 class Solution { public:bool isPowerOfThree(int n) {while(n > 3){if(n % 3 0){n n/3;}else{return false;}}return n 1;} };...

解码数据有序之道——常见排序算法总结

本文整理了常见的排序算法&#xff0c;采用c编码&#xff0c;并对其时间复杂度作以了分析。 1. 冒泡排序&#xff08;Bubble Sort&#xff09; 实现思路&#xff1a; 从数组的第一个元素开始&#xff0c;依次比较相邻的两个元素。如果当前元素大于下一个元素&#xff0c;则交…...

C语言实现图片文件的复制

在C语言中&#xff0c;直接处理图片文件&#xff08;如JPEG、PNG等&#xff09;的复制&#xff0c;通常涉及到文件I/O操作。这些图片文件是二进制文件&#xff0c;因此需要使用二进制模式读取和写入文件。 图片文件复制代码&#xff1a; #include <stdio.h> #include&l…...

一、windows上配置ninja环境

Ninja是Google的一名程序员推出的注重速度的构建工具&#xff0c;一般在Unix/Linux上的程序通过make/makefile来构建编译&#xff0c;而Ninja通过将编译任务并行组织&#xff0c;大大提高了构建速度。下面介绍了windows上配置Ninja环境。 1.下载Ninja ninja官网地址&#xff1…...

我们来编程 -- win11多jdk版本切换

题记 售前的酒喝到位了调研需求及文档整理出来了开发要入场了&#xff0c;真惨啊&#xff01;年底了&#xff0c;手里活干的好好的&#xff0c;因为flyback在项目地&#xff0c;硬是被安排进来了拥抱变化&#xff0c;我呸…不得不切换系统&#xff0c;构建代码&#xff0c;一股…...

JAVA 图形界面编程 AWT篇(1)

前言 为了应对JAVA课设&#xff0c;小编走上了java的图形界面编程的道路&#xff0c;通过博客分享自己的学习历程&#xff0c;并进行笔记的记录。 AWT&#xff08;Abstract Window Toolkit&#xff09;介绍 AWT&#xff08;抽象窗口工具包&#xff09;是 Java 最早的图形用户界…...

C语言 字符串输入输出函数、scanf(“%[^\n]“,)可输入空格 、fgets删除换行符

字符串输入函数&#xff1a; scanf&#xff08;"%s"&#xff0c;数组名&#xff09; gets&#xff08;数组名&#xff09; fgets&#xff08;&#xff09; --- 文件流输入函数 函数原型&#xff1a; int scanf( const char *format, ...…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...