二.Flowable自带Demo(Flowable-UI)体验

news2025/1/18 4:40:34

问题反馈

如有问题可通过微信公众号“假装正经的程序员”反馈

Flowable-UI是什么

Flowable-UI是flowable自带的一套供开发人员体验的系统,它通过后台的UI建模,让开发人员了解Flowable的工作流程,同时它部署简单,只需要将对应的war包丢到Tomcat后启动即可。

它主要提供如下功能:

  • Flowable Admin: 管理应用。让具有管理员权限的用户可以查询 BPMN、DMN、Form 及 Content 引擎,并提供了许多选项用于修改流程实例、任务、作业等。管理应用通过 REST API 连接至引擎,并与 Flowable Task 应用及 Flowable REST 应用一同部署。
  • Flowable IDM: 身份管理应用。为所有 Flowable UI 应用提供单点登录认证功能,并且为拥有 IDM 管理员权限的用户提供了管理用户、组与权限的功能。
  • Flowable Modeler: 建模器应用。让具有建模权限的用户可以创建流程模型、表单、选择表与应用定义。
  • Flowable Task: 任务应用。提供了启动流程实例、编辑任务表单、完成任务,以及查询流程实例与任务的功能。

如何安装启动

1.下载地址(自行选择版本):https://github.com/flowable/flowable-engine/releases

2.解压之后会获取到flowable-rest.war和flowable-ui.war

3.将上述两个war包丢进Tomcat的webapps目录下,启动Tomcat

4.出现如下,即表示启动成功

登录

输入http://localhost:8080/flowable-ui进行体验

用户名:admin

密码:test

创建表单

设置表单key

创建好表单名和表单key后会进入到如下界面:

将左侧组件拖入到右侧后会出现如下,通过右下角的笔头可以编辑组件显式内容

自定义组件id

如果需要通过该组件的值做判断或者展示,需要将id设置成自己业务相关内容,如流程中可能通过请假天数的值来判断走哪个流程,这个时候就可用${num>3}来做判断

保存表单,创建完毕

创建用户

创建用户组

创建用户

添加组成员

注意:新增用户后可能存在一定的延迟,另外此处的搜索要搜索的是用户的名称,否则可能搜索不到

授予权限

注意:如果新增的用户没有授予权限,那么该用户登录后会什么都不展示

这个时候登录lisi的账户就会出现任务应用程序了

定义流程

创建、导入流程

支持创建和导入已有流程

绘制流程

左侧流程组件可按需拖入,

详细组件内容后面会出专门的文章说明

节点关联表单

选择之前绘制的表单

分配审批用户

可以选择单个用户,也可以选择按组分配,这些都源于我们之前创建的用户

设置流程条件

流程校验

绘制完毕后,可以通过自带的流程校验器来进行流程的准确性校验

这个错误的意思是连接目标无效

连线时需要连接到对应的小红点上,经过排查发现上述错误是因为此处之前没有连上小红点

保存模型

导出BPMN文件

BPMN内容

<?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:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
  <process id="my_holiday" name="MyHoliday" isExecutable="true">
    <startEvent id="startEvent1" name="开始" flowable:formKey="1" flowable:formFieldValidation="true"></startEvent>
    <userTask id="sid-90A1EE7D-0917-45B6-82DF-824DCAC24745" name="部门主管审批" flowable:candidateUsers="zhangsan,lisi" flowable:formKey="2" flowable:formFieldValidation="true">
      <extensionElements>
        <modeler:user-info-email-zhangsan xmlns:modeler="http://flowable.org/modeler"><![CDATA[zhangsan@qq.com]]></modeler:user-info-email-zhangsan>
        <modeler:user-info-firstname-zhangsan xmlns:modeler="http://flowable.org/modeler"><![CDATA[zhangsan]]></modeler:user-info-firstname-zhangsan>
        <modeler:user-info-firstname-lisi xmlns:modeler="http://flowable.org/modeler"><![CDATA[lisi]]></modeler:user-info-firstname-lisi>
        <modeler:activiti-idm-candidate-user xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-candidate-user>
        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <userTask id="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41" name="申请" flowable:assignee="admin" flowable:formKey="1" flowable:formFieldValidation="true">
      <extensionElements>
        <modeler:activiti-idm-assignee xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-assignee>
        <modeler:assignee-info-email xmlns:modeler="http://flowable.org/modeler"><![CDATA[test-admin@example-domain.tld]]></modeler:assignee-info-email>
        <modeler:assignee-info-firstname xmlns:modeler="http://flowable.org/modeler"><![CDATA[Test]]></modeler:assignee-info-firstname>
        <modeler:assignee-info-lastname xmlns:modeler="http://flowable.org/modeler"><![CDATA[Administrator]]></modeler:assignee-info-lastname>
        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <sequenceFlow id="sid-C3388D53-833B-4D07-A5FC-B2286032FC41" sourceRef="startEvent1" targetRef="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41"></sequenceFlow>
    <userTask id="sid-0E218782-7FE2-4693-8E01-29C4FB882EED" name="主管审批" flowable:candidateGroups="test_group" flowable:formKey="2" flowable:formFieldValidation="true">
      <extensionElements>
        <modeler:group-info-name-test_group xmlns:modeler="http://flowable.org/modeler"><![CDATA[测试组]]></modeler:group-info-name-test_group>
        <modeler:activiti-idm-candidate-group xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-candidate-group>
        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <userTask id="sid-90C02DC7-900A-477A-BB79-B525966EC27B" name="经理审批" flowable:assignee="wangwu" flowable:formKey="2" flowable:formFieldValidation="true">
      <extensionElements>
        <modeler:activiti-idm-assignee xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-assignee>
        <modeler:assignee-info-email xmlns:modeler="http://flowable.org/modeler"><![CDATA[wangwu@qq.com]]></modeler:assignee-info-email>
        <modeler:assignee-info-firstname xmlns:modeler="http://flowable.org/modeler"><![CDATA[wangwu]]></modeler:assignee-info-firstname>
        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <endEvent id="sid-5F37DD3B-A592-4F3A-A003-C3674700DEC9"></endEvent>
    <sequenceFlow id="sid-6BD1B471-E03D-4508-AB82-A4F5D2FA09EB" name="不通过" sourceRef="sid-0E218782-7FE2-4693-8E01-29C4FB882EED" targetRef="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='拒绝'}]]></conditionExpression>
    </sequenceFlow>
    <exclusiveGateway id="sid-9FBE069F-C126-4897-B91C-E1A9531A763D"></exclusiveGateway>
    <sequenceFlow id="sid-440D1438-7682-4E99-B3A0-1AB02D4C0DA3" name="通过" sourceRef="sid-0E218782-7FE2-4693-8E01-29C4FB882EED" targetRef="sid-5F37DD3B-A592-4F3A-A003-C3674700DEC9">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='同意'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-D7A6B9F8-E554-49A5-AFDA-03F079D7FFA3" name="通过" sourceRef="sid-90C02DC7-900A-477A-BB79-B525966EC27B" targetRef="sid-5F37DD3B-A592-4F3A-A003-C3674700DEC9">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='同意'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-3C1B19B5-F174-4FE4-9B55-DBE84FC23CDD" name="通过" sourceRef="sid-90A1EE7D-0917-45B6-82DF-824DCAC24745" targetRef="sid-90C02DC7-900A-477A-BB79-B525966EC27B">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='同意'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-B2E18218-DB07-4079-A55E-60B581457B3C" name="不通过" sourceRef="sid-90C02DC7-900A-477A-BB79-B525966EC27B" targetRef="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='拒绝'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-7F7F0C70-725F-4080-9865-C76B2DC28968" name="不通过" sourceRef="sid-90A1EE7D-0917-45B6-82DF-824DCAC24745" targetRef="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve=='拒绝'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-F419372D-19E2-4912-9DC8-756290B9FC83" sourceRef="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41" targetRef="sid-9FBE069F-C126-4897-B91C-E1A9531A763D"></sequenceFlow>
    <sequenceFlow id="sid-48F90825-6079-49E1-991A-1FE011D8755B" name="大于3天" sourceRef="sid-9FBE069F-C126-4897-B91C-E1A9531A763D" targetRef="sid-90A1EE7D-0917-45B6-82DF-824DCAC24745">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${num>3}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-B12FA2F5-CE8F-44AE-9E11-5C711F5DF114" name="小于等于3天" sourceRef="sid-9FBE069F-C126-4897-B91C-E1A9531A763D" targetRef="sid-0E218782-7FE2-4693-8E01-29C4FB882EED">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${num<=3}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_my_holiday">
    <bpmndi:BPMNPlane bpmnElement="my_holiday" id="BPMNPlane_my_holiday">
      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
        <omgdc:Bounds height="30.0" width="30.0" x="105.0" y="160.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-90A1EE7D-0917-45B6-82DF-824DCAC24745" id="BPMNShape_sid-90A1EE7D-0917-45B6-82DF-824DCAC24745">
        <omgdc:Bounds height="80.0" width="100.0" x="554.9999917298557" y="132.9999980181456"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41" id="BPMNShape_sid-36EFE8F0-BA14-429C-8B74-C3B1065AEC41">
        <omgdc:Bounds height="80.0" width="100.0" x="210.0" y="135.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-0E218782-7FE2-4693-8E01-29C4FB882EED" id="BPMNShape_sid-0E218782-7FE2-4693-8E01-29C4FB882EED">
        <omgdc:Bounds height="80.0" width="100.0" x="555.0" y="285.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-90C02DC7-900A-477A-BB79-B525966EC27B" id="BPMNShape_sid-90C02DC7-900A-477A-BB79-B525966EC27B">
        <omgdc:Bounds height="80.0" width="100.0" x="719.9999785423283" y="132.9999960362912"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-5F37DD3B-A592-4F3A-A003-C3674700DEC9" id="BPMNShape_sid-5F37DD3B-A592-4F3A-A003-C3674700DEC9">
        <omgdc:Bounds height="28.0" width="28.0" x="884.9999868124726" y="158.9999976307154"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-9FBE069F-C126-4897-B91C-E1A9531A763D" id="BPMNShape_sid-9FBE069F-C126-4897-B91C-E1A9531A763D">
        <omgdc:Bounds height="40.0" width="40.0" x="418.5" y="153.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-C3388D53-833B-4D07-A5FC-B2286032FC41" id="BPMNEdge_sid-C3388D53-833B-4D07-A5FC-B2286032FC41" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="134.9499990675947" y="175.0"></omgdi:waypoint>
        <omgdi:waypoint x="210.0" y="175.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-6BD1B471-E03D-4508-AB82-A4F5D2FA09EB" id="BPMNEdge_sid-6BD1B471-E03D-4508-AB82-A4F5D2FA09EB" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="605.0" y="364.95000000000005"></omgdi:waypoint>
        <omgdi:waypoint x="605.0" y="396.0"></omgdi:waypoint>
        <omgdi:waypoint x="260.0" y="396.0"></omgdi:waypoint>
        <omgdi:waypoint x="260.0" y="214.95000000000002"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-D7A6B9F8-E554-49A5-AFDA-03F079D7FFA3" id="BPMNEdge_sid-D7A6B9F8-E554-49A5-AFDA-03F079D7FFA3" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
        <omgdi:waypoint x="819.9499779958626" y="172.99999665366704"></omgdi:waypoint>
        <omgdi:waypoint x="884.9999867883963" y="172.99999745767713"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-7F7F0C70-725F-4080-9865-C76B2DC28968" id="BPMNEdge_sid-7F7F0C70-725F-4080-9865-C76B2DC28968" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="75.0" flowable:targetDockerY="1.0">
        <omgdi:waypoint x="604.4117612833849" y="132.9999980181456"></omgdi:waypoint>
        <omgdi:waypoint x="604.0" y="105.0"></omgdi:waypoint>
        <omgdi:waypoint x="283.5" y="105.0"></omgdi:waypoint>
        <omgdi:waypoint x="284.9516129032258" y="135.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-48F90825-6079-49E1-991A-1FE011D8755B" id="BPMNEdge_sid-48F90825-6079-49E1-991A-1FE011D8755B" flowable:sourceDockerX="20.0" flowable:sourceDockerY="20.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="458.4440128419785" y="172.99999976193936"></omgdi:waypoint>
        <omgdi:waypoint x="554.9999916606904" y="172.99999861270194"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-F419372D-19E2-4912-9DC8-756290B9FC83" id="BPMNEdge_sid-F419372D-19E2-4912-9DC8-756290B9FC83" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.0" flowable:targetDockerY="20.0">
        <omgdi:waypoint x="309.9499999999995" y="174.43977591036415"></omgdi:waypoint>
        <omgdi:waypoint x="418.72160664819944" y="173.22105263157894"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B12FA2F5-CE8F-44AE-9E11-5C711F5DF114" id="BPMNEdge_sid-B12FA2F5-CE8F-44AE-9E11-5C711F5DF114" flowable:sourceDockerX="20.0" flowable:sourceDockerY="20.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="438.56540983606556" y="192.87809633027524"></omgdi:waypoint>
        <omgdi:waypoint x="439.0" y="325.0"></omgdi:waypoint>
        <omgdi:waypoint x="555.0" y="325.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B2E18218-DB07-4079-A55E-60B581457B3C" id="BPMNEdge_sid-B2E18218-DB07-4079-A55E-60B581457B3C" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="769.5604275155658" y="132.9999960362912"></omgdi:waypoint>
        <omgdi:waypoint x="769.0" y="82.0"></omgdi:waypoint>
        <omgdi:waypoint x="260.0" y="82.0"></omgdi:waypoint>
        <omgdi:waypoint x="260.0" y="135.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-3C1B19B5-F174-4FE4-9B55-DBE84FC23CDD" id="BPMNEdge_sid-3C1B19B5-F174-4FE4-9B55-DBE84FC23CDD" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="654.9499897468008" y="172.9999974175836"></omgdi:waypoint>
        <omgdi:waypoint x="719.9999785423283" y="172.99999663625266"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-440D1438-7682-4E99-B3A0-1AB02D4C0DA3" id="BPMNEdge_sid-440D1438-7682-4E99-B3A0-1AB02D4C0DA3" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
        <omgdi:waypoint x="654.9499999999999" y="325.0"></omgdi:waypoint>
        <omgdi:waypoint x="898.0" y="325.0"></omgdi:waypoint>
        <omgdi:waypoint x="898.9078847167215" y="186.94970208387926"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

发布流程

创建应用程序

关联流程

发布流程

保存好上述应用程序后,点击该应用程序进行发布

发起流程

启动流程

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

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

相关文章

医学AI最新研究·哈佛医学院·告别切片局限:3D病理如何革新癌症预后

小罗碎碎念 本期文章分享的主要是AI与肿瘤的复发、转移相关的最新研究。 筛选规则如下&#xff1a; (artificial intelligence or deep Learning or convolutional networks or transformer or selfattention or machine learning) and (Tumor metastasis or Recurrence of Ca…

Windows系统安装OpenSSH使用VScode远程连接内网Linux服务器开发

文章目录 &#x1f4a1;推荐 前言1、安装OpenSSH2、VS Code配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网…

视频批量裁剪助手:一键式高效缩小视频尺寸,极速提升工作效率的必备神器!

视频已经成为我们日常生活和工作中不可或缺的一部分。无论是个人vlog、企业宣传片&#xff0c;还是教学视频、广告素材&#xff0c;视频都承载着大量的信息和情感。然而&#xff0c;很多时候&#xff0c;我们手中的视频尺寸并不符合我们的需求&#xff0c;这时&#xff0c;一款…

Xilinx(AMD) FPGA通过ICAP原语读取芯片IDCODE实现方法

1 概述 Xilinx每种型号的FPGA芯片都有一个唯一的IDCODE与之对应&#xff0c;同一型号不同封装的IDCODE是相同的。IDCODE的获取方法包括JTAG、ICAP原语、AXI_HWICAP IP核等。获取IDCODE常用于根据芯片型号改变代码的功能&#xff0c;或者对代码进行授权保护&#xff0c;只能在指…

ROS | 用C++和python实现运动控制功能

基础知识&#xff1a; 用C实现&#xff1a; C代码&#xff1a; 用python实现&#xff1a; Python代码&#xff1a;

【编译原理复习笔记】语法分析-补充(二义性与LR错误处理)

二义性文法的 LR 分析 每个二义性文法都不是 LR 的 但是某些二义性文法更加简短&#xff0c;描述更方便 如 I7 和 I8 具有移进归约冲突 使用优先级和结合性解决冲突 对于 I7&#xff0c;由于乘号优先级高于加号&#xff0c;所以当下一个输入符号为乘号时&#xff0c;我们优…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

设计模式11——代理模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 代理模式&#xff08;Proxy&am…

mfc100u.dll缺失怎么解决,详细分析mfc100u.dll文件属性

mfc100u.dll文件缺失是一个常见的问题&#xff0c;这通常由计算机在执行操作时不慎造成的dll文件遗失引起。作为一个关键的dll文件&#xff0c;如果没有mfc100u.dll&#xff0c;可能会导致程序无法启动或系统错误。下面&#xff0c;我们将讨论几种解决mfc100u.dll文件遗失的方法…

弘君资本午评:三大股指全线走低,北证50指数逆市涨逾3%

23日早盘&#xff0c;三大股指低开低走&#xff0c;盘中均跌超1%&#xff0c;北证50指数逆市拉升&#xff0c;一度涨超4%&#xff1b;两市半日成交近5300亿元。 到午间收盘&#xff0c;沪指跌1%报3126.82点&#xff0c;深证成指跌1.19%&#xff0c;创业板指跌0.98%&#xff0c…

5月23日 网络编程day6

1.IO多路复用的原理&#xff1f; 答&#xff1a;将文件描述符放入一个集合中&#xff0c;当集合中有事件产生&#xff0c;移除其他文件描述符&#xff0c;执行剩下的文件描述符所对应的任务&#xff0c;往复循环。 2.实现IO多路复用可以使用哪些函数完成&#xff1f; 答&…

深度学习之体育运动项目姿态估计识别计数系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在体育运动领域&#xff0c;对运动员的姿态进行准确估计和识别&#xff0c;以及对运动员数量进行精确…

苹果MacOS系统使用微软远程桌面连接Windows电脑桌面详细步骤

文章目录 前言1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1.2 局域网远程控制windows 2. 测试Mac公网远程控制windows2.1 在windows电脑上安装cpolar2.2 Mac公网远程windows 3. 配置公网固定TCP地址 前言 日常工作生活中&#xff0c;有时候会涉及到不同设备不同操作系…

软件下载系统asp.net

本项目实现电子书下载网站的功能&#xff0c;实现文章、管理员分类&#xff0c;友情连接的管理以及对前台页面的静态化。网站前台实现对电子书的详细信息介绍和提供下载。 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于a…

2024 Google I/O - 提前窥探 Android 15 的新功能与适配

今年年初就简单介绍过 Android 15 预览版 的相关内容&#xff0c;而昨天 Google I/O 宣布了 Android 15 Beta2&#xff0c;作为第二个 Beta 版本 &#xff0c;它已经基本接近它未来的样子&#xff0c;毕竟下个版本就是 Platform Stability 了&#xff0c;所以让我们提前来一睹 …

绿色智能:AI机器学习在环境保护中的深度应用与实践案例

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

IDEA如何对多线程进行debug

开发中使用到多线程的时候不少,但是debug起来还是比较困难的,因为默认每次只会进入一个线程,这样有些问题是发现不了的,其实IDEA也是支持进入每个线程来debug的 写一个简单的demo public class ThreadDebug {public static void main(String[] args) {MyThread myThread new…

04-Vue:ref获取页面节点--很简单

目录 前言在Vue中&#xff0c;通过 ref 属性获取DOM元素使用 ref 属性获取整个子组件&#xff08;父组件调用子组件的方法&#xff09; 前言 我们接着上一篇文章 03-02-Vue组件之间的传值 来讲。 下一篇文章 05-Vue路由 在Vue中&#xff0c;通过 ref 属性获取DOM元素 我们当然…

前端基础:1-2 面向对象 + Promise

面向对象 对象是什么&#xff1f;为什么要面向对象&#xff1f; 通过代码抽象&#xff0c;进而藐视某个种类物体的方式 特点&#xff1a;逻辑上迁移更加灵活、代码复用性更高、高度的模块化 对象的理解 对象是对于单个物体的简单抽象对象是容器&#xff0c;封装了属性 &am…

电商平台api接口:采购比价可用的比价工具推荐

电商平台api接口 目前&#xff0c;许多企业在进行内部采购时都有比价的需求。企业利用比价采购这一方式&#xff0c;能通过对比不同平台上、不同供应商的报价&#xff0c;进而选择最符合其需求和预算的产品或服务。 在比价采购的流程中&#xff0c;最重要的步骤就是企业在明确…