incloud开发文档 5.1.0 Help

工作流开发

工作流开发主要分成两部分:

一部分是工作流服务本身,工作流服务是一个独立运行的服务,它独立于任何一业务, 它的主要功能是提供工作流的运行环境,包括工作流的定义、工作流的运行、工作流的监控等等。

另一部分是业务跟流程的集成,业务跟流程的集成主要是指业务系统如何调用工作流服务,怎样使用流程中的定义,运行时怎样读取相应的变量,怎样处理流程中的任务等等。 当然这部分不需要业务系统自己去实现,工作流服务提供了相应的sdk,业务系统只需要继承相应的类、接口或调用相应的接口即可。

工作原理

工作流原理

工作流服务

工作流服务是一个独立运行的服务,它独立于任何一业务,一般由平台独立提供,平台提供有两种形式:

独立服务形式

服务镜像

平台提供独立的服务镜像,业务系统中只需要配置相应的运行参数即可,不需要关心服务的运行环境,也不需要关心服务的运行状态。 一般情况下,本地运行的话,可以直接把镜像导到本地docker,然后运行即可,注意使用-e 加上相应运行时的参数。

参数可以参考:

环境变量

请根据实际情况配置相应的参数,例如:

docker run -d --name wf -p 8003:8003 \ -e "INCLOUD_NACOS_SERVICE_HOST=192.168.0.79" ... incloud-base-wf:5.1.0-SNAPSHOT

k8s环境配置

如果是开发环境,建议部署k8s环境中,请把相应的参数配置到k8s的配置文件中,或者联系平台开发人员,协助编写相应的K8S配置文件。

工作流的nacos配置参考

incloud: table: packages: - com.netwisd.base.wf.entity openapi: prefix: wf camunda: bpm: database: table-prefix: incloud_base_wf_ schema-update: false #type: mysql type: postgres seata: registry: type: nacos nacos: application: seata-server server-addr: ${INCLOUD_NACOS_SERVICE_HOST}:${INCLOUD_NACOS_SERVICE_PORT} group : "DEFAULT_GROUP" namespace: ${INCLOUD_NACOS_NAMESPACE} username: "nacos" password: "nacos" service: vgroup-mapping: incloud-base-wf-seata-service-group: default tx-service-group: incloud-base-wf-seata-service-group

starter包形式

为了方便获取工作流的服务包,平台提供工作流服务的starter包,业务系统只需要创建一个工作流服务,引入相应的starter包,即可使用工作流服务。

pom

一般会创建一个maven的子模块,命名为:incloud-base-wf,然后引入相应的starter包,例如:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>incloud-base</artifactId> <groupId>com.netwisd</groupId> <version>5.1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>incloud-base-wf</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- openApi --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- netwisd security模块 --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-oauth</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- nacos的注册发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- nacos的配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build> </project>

参考上面的pom配置,可以在本地创建一个工作流服务。然后按正常的服务启动即可,不管是你把他再做成镜像或者以jar包形式运行都可以。

Dockerfile

如果想把工作流做成docker镜像,可以参考下面的Dockerfile

FROM amazoncorretto:17 #作者 MAINTAINER zouliming@netwisd.com #工作空间 WORKDIR /root/incloud #时区同步 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #对外映射的端口 EXPOSE 8003 ADD ./target/incloud-base-wf.jar ./ #-Djava.security.egd=file:/dev/./urandom参数是优化tomcat启动速度的,我们工程中使用undertom,不需要这玩意儿 CMD java --add-opens java.base/java.lang.reflect=ALL-UNNAMED -Xms128m -Xmx2048m -jar incloud-base-wf.jar

运行参数

不管是哪种形式,注意运行工作流时,需要加上jvm的相应参数:

--add-opens java.base/java.lang.reflect=ALL-UNNAMED

业务基于工作流开发

业务集成工作流

业务集成指的就是业务开发时,怎样使用工作流实现流程的跳转,选人,办理、提交等业务操作。

平台对工作流进行了进一步的封装,给业务提供了业务上集成使用的starter包。使用下面的starter包,可以很方便的集成工作流。

... <!-- wf模块 --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> ...

开发业务流程

流程定义

流程定义可以参考如下:

流程建模

生成流程代码

使用数据建模 或后台代码生成,生成工作流相关的代码,打包构建后即可。

代码生成 可以参考:

代码生成

数据建模 可以参考:

代码生成

工作流开发视频教程

Last modified: 20 一月 2025