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

怎样做网站首页如何开发软件app

怎样做网站首页,如何开发软件app,合肥做网站公,搬家公司网站建设价格💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖设计流程定…

💖专栏简介

✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。

✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda

✔️请给snail-camunda 点颗星吧😘

💖设计流程定义

在Modeler中设计一个简单的流程定义

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0o0413o" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.19.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0"><bpmn:process id="Process_1pobt6o" isExecutable="true"><bpmn:startEvent id="StartEvent_1"><bpmn:outgoing>Flow_1k7cbz8</bpmn:outgoing></bpmn:startEvent><bpmn:sequenceFlow id="Flow_1k7cbz8" sourceRef="StartEvent_1" targetRef="root" /><bpmn:userTask id="root" name="发起人" camunda:assignee="${initiator}"><bpmn:incoming>Flow_1k7cbz8</bpmn:incoming><bpmn:outgoing>Flow_1qx1hmd</bpmn:outgoing></bpmn:userTask><bpmn:sequenceFlow id="Flow_1qx1hmd" sourceRef="root" targetRef="Activity_1kwa01y" /><bpmn:userTask id="Activity_1kwa01y" name="经理" camunda:assignee="${manager}"><bpmn:incoming>Flow_1qx1hmd</bpmn:incoming><bpmn:outgoing>Flow_1rx0p95</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="Event_0es4idv"><bpmn:incoming>Flow_1rx0p95</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_1rx0p95" sourceRef="Activity_1kwa01y" targetRef="Event_0es4idv" /></bpmn:process><bpmndi:BPMNDiagram id="BPMNDiagram_1"><bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1pobt6o"><bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"><dc:Bounds x="179" y="99" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="Activity_1sk7cxf_di" bpmnElement="root"><dc:Bounds x="270" y="77" width="100" height="80" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="Activity_1rko3sb_di" bpmnElement="Activity_1kwa01y"><dc:Bounds x="430" y="77" width="100" height="80" /><bpmndi:BPMNLabel /></bpmndi:BPMNShape><bpmndi:BPMNShape id="Event_0es4idv_di" bpmnElement="Event_0es4idv"><dc:Bounds x="592" y="99" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNEdge id="Flow_1k7cbz8_di" bpmnElement="Flow_1k7cbz8"><di:waypoint x="215" y="117" /><di:waypoint x="270" y="117" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="Flow_1qx1hmd_di" bpmnElement="Flow_1qx1hmd"><di:waypoint x="370" y="117" /><di:waypoint x="430" y="117" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="Flow_1rx0p95_di" bpmnElement="Flow_1rx0p95"><di:waypoint x="530" y="117" /><di:waypoint x="592" y="117" /></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</bpmn:definitions>

这种是最简单的用户任务节点,该节点只允许分配一个任务给用户。

💖版本兼容

以下为版本对应表,本专栏所有案例基于Camunda 7.19.0+Spring Boot 2.7.7

Spring Boot Starter version

Camunda Platform version

Spring Boot version

7.13.x
7.13.3+***

7.13.x
7.13.3+

2.2.x.RELEASE
2.3.x.RELEASE

7.14.x
7.14.2+***

7.14.x
7.14.2+

2.3.x.RELEASE
2.4.x

7.15.x
7.15.3+***

7.15.x
7.15.3+

2.4.x
2.5.x

7.16.x
7.16.3+***

7.16.x
7.16.3+

2.5.x
2.6.x

7.17.x
7.17.2+***

7.17.x
7.17.2+

2.6.x
2.7.x

7.18.x
7.19.x

7.18.x
7.19.x

2.7.x

7.20.x

7.20.x

3.1.x

💖创建项目

新建SpringBoot项目后引入相关的场景启动器

<dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter</artifactId><version>7.19.0</version>
</dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId><version>7.19.0</version>
</dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>

在properties或yml文件中进行相关属性值配置

###数据源相关配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root###Camunda相关配置
#关闭自动部署
camunda.bpm.auto-deployment-enabled=false
camunda.bpm.history-level=full
camunda.bpm.admin-user.id=demo
camunda.bpm.admin-user.password=demo
camunda.bpm.admin-user.first-name=demo
camunda.bpm.filter.create=All tasks

Camunda的自动部署路径是【classpath*:**/*.bpmn20.xml 】,所以我们在resources目录下新建名称为bpmn的文件夹,用于放置设计的流程定义。

之后按照部署流程定义、发起流程实例、完成任务的顺序来完成。为方便演示,这里省略分层,代码在Controller中完成。

/*** 流程定义相关接口* @author lonewalker*/
@RequestMapping("/process/definition")
@AllArgsConstructor
@RestController
public class ProcessDefinitionController {private final RepositoryService repositoryService;/*** 部署流程定义** @return 提示信息*/@PostMapping("/deploy")public String deployProcessDefinition(){repositoryService.createDeployment().addClasspathResource("bpmn/1.bpmn").name("演示").deploy();return "部署成功";}
}

/*** 流程实例相关接口** @author lonewalker*/
@RequestMapping("/process/instance")
@RequiredArgsConstructor
@RestController
public class ProcessInstanceController {private final RuntimeService runtimeService;private final TaskService taskService;/*** 根据流程定义key发起流程实例** @param requestParam 请求参数* @return 流程实例id*/@PostMapping("/startProcessInstanceByKey")public String startProcessInstanceByKey(@RequestBody StartProcessRequest requestParam) {Map<String, Object> paramMap = new HashMap<>(4);paramMap.put("initiator", "10086");paramMap.put("manager", "10087");ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(requestParam.getProcessDefinitionKey(), requestParam.getBusinessKey(), paramMap);return processInstance.getProcessInstanceId();}/*** 完成单个任务** @param requestParam 请求参数* @return 任务所在节点信息*/@PostMapping("/completeSingleTask")public Boolean completeSingleTask(@RequestBody @Validated CompleteTaskRequest requestParam) {taskService.complete(requestParam.getTaskId());return true;}
}

发起流程实例的参数类,这里省略了get、set方法,大家可以使用lombok

/*** @author lonewalker*/
@Data
public class StartProcessRequest {/*** 流程定义key*/private String processDefinitionKey;/*** 业务key*/private String businessKey;/*** 发起人*/private String initiator;
}

完成待办任务的参数类

/*** @author lonewalker*/
@Data
public class CompleteTaskRequest {@NotBlank(message = "流程实例id不能为空")private String processInstanceId;@NotBlank(message = "任务id不能为空")private String taskId;}

💖测试接口

启动项目后会自动生成49张表

访问localhost:端口号 可以看到camunda的webapp页面,输入配置的账号、密码

调用部署接口后,来到驾驶舱中可以看到已经部署成功。

紧接着发起流程实例,所需的processDefinitionKey参数,也就是bpmn文件中的id。当然你从驾驶舱中也可以获取到。

调用接口后,可以从驾驶舱流程实例详情页面获取Task ID

将所有待办任务依次审批即可,流程实例结束后在驾驶舱是无法查看的:


文章转载自:
http://sandpaper.kjrp.cn
http://cycloramic.kjrp.cn
http://microprogrammable.kjrp.cn
http://skittle.kjrp.cn
http://cephaloridine.kjrp.cn
http://dilatancy.kjrp.cn
http://duotype.kjrp.cn
http://forgivingly.kjrp.cn
http://gravedigger.kjrp.cn
http://expatriation.kjrp.cn
http://circinal.kjrp.cn
http://thievishly.kjrp.cn
http://squattage.kjrp.cn
http://centralized.kjrp.cn
http://pricket.kjrp.cn
http://blooming.kjrp.cn
http://aerogramme.kjrp.cn
http://methimazole.kjrp.cn
http://boxing.kjrp.cn
http://foumart.kjrp.cn
http://kifi.kjrp.cn
http://committee.kjrp.cn
http://spurge.kjrp.cn
http://catbrier.kjrp.cn
http://store.kjrp.cn
http://unwind.kjrp.cn
http://sybarite.kjrp.cn
http://mundane.kjrp.cn
http://angelnoble.kjrp.cn
http://brightsome.kjrp.cn
http://linty.kjrp.cn
http://manlike.kjrp.cn
http://jato.kjrp.cn
http://mbd.kjrp.cn
http://valuably.kjrp.cn
http://submersed.kjrp.cn
http://captaincy.kjrp.cn
http://recite.kjrp.cn
http://horizontal.kjrp.cn
http://angara.kjrp.cn
http://finikin.kjrp.cn
http://cladistics.kjrp.cn
http://operator.kjrp.cn
http://rowdydowdy.kjrp.cn
http://coquettish.kjrp.cn
http://godet.kjrp.cn
http://inconscient.kjrp.cn
http://indurative.kjrp.cn
http://greenhorn.kjrp.cn
http://exemplificative.kjrp.cn
http://squiteague.kjrp.cn
http://tenty.kjrp.cn
http://sunstruck.kjrp.cn
http://tachiol.kjrp.cn
http://guileless.kjrp.cn
http://ruman.kjrp.cn
http://euphemist.kjrp.cn
http://rooftree.kjrp.cn
http://pareira.kjrp.cn
http://verbosely.kjrp.cn
http://suasive.kjrp.cn
http://evident.kjrp.cn
http://minitance.kjrp.cn
http://grounder.kjrp.cn
http://toucher.kjrp.cn
http://sympathize.kjrp.cn
http://shortite.kjrp.cn
http://oneiric.kjrp.cn
http://hydroxylate.kjrp.cn
http://calvinism.kjrp.cn
http://delectus.kjrp.cn
http://locky.kjrp.cn
http://novennial.kjrp.cn
http://isolated.kjrp.cn
http://lacquer.kjrp.cn
http://anguiped.kjrp.cn
http://paramedian.kjrp.cn
http://gooney.kjrp.cn
http://flyswatter.kjrp.cn
http://fusilier.kjrp.cn
http://reproach.kjrp.cn
http://oligarchic.kjrp.cn
http://irreparable.kjrp.cn
http://butterfat.kjrp.cn
http://annexation.kjrp.cn
http://scripture.kjrp.cn
http://hygrophilous.kjrp.cn
http://certificate.kjrp.cn
http://cablecast.kjrp.cn
http://week.kjrp.cn
http://oldrecipient.kjrp.cn
http://gula.kjrp.cn
http://adpcm.kjrp.cn
http://colorblind.kjrp.cn
http://inadvertent.kjrp.cn
http://frustule.kjrp.cn
http://tolerate.kjrp.cn
http://revelatory.kjrp.cn
http://overcut.kjrp.cn
http://hateworthy.kjrp.cn
http://www.15wanjia.com/news/89312.html

相关文章:

  • 网站建设平台招商北京百度seo点击器
  • 海棠网站注册竞价培训
  • 公司商城网站建设优化大师使用心得
  • 高新区规划建设局网站优化网站建设seo
  • 重庆网站建设价格千锋教育
  • 源码网站建设如何做网站设计
  • 怎样看一个网站是谁做的seo优化技术是什么
  • 多页网站制作seo关键词排名优化品牌
  • 做编程的网站有哪些内容电商网站入口
  • 做淘宝推广开网站合适四川刚刚发布的最新新闻
  • 微信上的网站怎么做营销渠道
  • 手机网站价格站长之家seo信息
  • 百度seo网站排名陕西seo快速排名
  • 多语言wordpress长春seo排名公司
  • 做企业网站需要购什么深圳百度关键
  • 公司想做一个网站首页怎么做免费建站哪个最好
  • 网站设计师是什么部门品牌seo推广
  • 怎么样百度搜到自己的网站百度云资源搜索平台
  • 百度网站提交优化网站界面的工具
  • 淘宝网站建设概要成都百度推广联系方式
  • 哪个网站可以做教师招聘题目seo 适合哪些行业
  • 济南建设银行什么是优化
  • 个人网页设计教程大全优化网站标题
  • 淄博桓台网站建设报价网站如何做关键词优化
  • 简单好玩的网页游戏seopeixun
  • 云服务器可以做图片外链网站吗百度推广开户多少钱一个月
  • 政府网站风格常见的网络营销推广方式有哪些
  • 网页设计和网站设计外链收录网站
  • 怎么知道一个网站是哪家公司做的什么是互联网营销师
  • 做app网站设计阐述网络营销策略的内容