记ActivitiCloud的一次体验

前言

最近学习了一段时间工作流Activiti开源框架,在Activiti6和Activiti7都体验了一下,因为Activiti6.x是一个比较稳定的版本。而Activiti7.x虽然很久就出了,但是一直在更新,目前小版本问题和不稳定性还是比较多,但是作为比较喜欢尝鲜的我来说,我还是在公司的项目中使用的是Activiti 7.x,由于需求上不需要使用SpringSecurity,所以也没有使用Activiti 7 版本的那两个新的API,但是在学习的过程使用了那两个新的API,还是非常的简便好用的。目前公司的工作流需求已经完成了,我也是回过头来再更加深入连接下Activiti。

Activiti7 是分成了两部分:Activiti CoreActiviti Cloud。之前一直使用的也是Activiti Core。所以这次来学习使用一下Activiti Cloud。

因为Activiti是国外的网站,而且官网的文档也没有个比较稳定的版本,打卡网页也比较慢。刚开始我在网上下载了一个PDF的文档,按照文档来部署发现许多地方都已经变化了,导致进行到一半就无法继续下去了,这也足矣说明Activiti7的更新之快和年度跨越之久。最后我还是按照官网最新的文档来进行部署了一下,很多地方确实没有做深入的理解只能简单的翻译,不过最后我还是搭建成功了。

职责划分

Activiti Cloud 将系统分成了多个组成,也是为了多个服务:

  • Activiti云运行时捆绑包
  • Activiti云查询服务
  • Activiti云审计服务
  • Activiti云连接器服务

这些工作的主要目的其实就是为了上云,减少对Activiti依赖的耦合,需要使用Activiti的系统只需要通过调用http接口的方式来实现工作流能力的整合,将工作流业务托管上云。

职责划分表

开始部署

Activiti Cloud 是一组云本机组件,从零开始设计到在分布式环境中工作。所以要完成整个部署需要部署多个组件。

Activiti 云包括 5 个基础构建基块:

  • Activiti 云运行时捆绑包
  • 活动云查询
  • 活动云审计
  • Activiti 云连接器
  • Activiti 云通知服务 (GraphQL)
Activiti 云应用程序完整示例图表

Activiti Cloud 推荐使用k8s集群来部署该项目,所以他推荐了两个选项:使用亚马逊云和使用谷歌云;因为只是作为学习尝试,我们也可以使用docker在自己本机上部署,我也是使用的这种方式。

官网Guide

硬件配置

需要为Docker 虚拟机分配至少4个CPU内核和8 Gb RAM

软件条件

  • 安装Docker for Desktop 或 Docker Toolbox
  • 安装Docker-compose
  • 安装 GNU Make。通常Linux和Mac系统已经安装了, window系统使用Chocolatey 来安装.
  • 安装 Git Bash 终端 . 通常Linux和Mac系统已经安装了. window可以使用 Chocolatey Git Install 来安装。

下载示例源码

git clone https://github.com/Activiti/activiti-cloud-examples
cd activiti-cloud-examples/docker-compose
│  Activiti v7 REST API.postman_collection.json # postman api接口文件
├─docker                                 # docker方式,好像官网没有这方面使用说明了
│  │  enabled_plugins
│  │  frontend-docker-compose.yml        # 前端UI模块
│  │  infrastructure-docker-compose.yml  # 基础模块
│  │  modelling-docker-compose.yml       # 流程图绘制管理模块
│  │
│  └─apps
│          apps.json
│          default-app.json
└─docker-compose                        # docker-compose 方式
        .env                            # 配置文件
        activiti-realm.json             # realm 配置文件
        docker-compose.yml              
        Dockerfile
        enabled_plugins
        Makefile
        nginx.conf                      
        README.md

使用docker启动服务

配置hosts文件:127.0.0.1 activiti-cloud-sso-idm

cd docker
docker-compose -f infrastructure-docker-compose.yml up -d # 启动基础模块
docker-compose -f modelling-docker-compose.yml up -d # 启动流程图模块
docker-compose -f frontend-docker-compose.yml up -d
➜ docker-compose -f infrastructure-docker-compose.yml up -d
Creating network "docker_default" with the default driver
Creating docker_activiti-cloud-registry_1 ... done
Creating docker_rabbitmq_1                ... done
Creating docker_activiti-keycloak_1       ... done
Creating docker_activiti-cloud-gateway_1  ... done
➜ docker-compose -f modelling-docker-compose.yml  up -d    
WARNING: Found orphan containers (docker_activiti-keycloak_1, docker_activiti-cloud-registry_1, docker_activiti-cloud-gateway_1, docker_rabbitmq_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Creating docker_modeling-app_1 ... done
➜ 
docker 容器运行了

访问KeyCloak

访问 http://activiti-cloud-sso-idm:8180/auth/ 可以打开keycloak

image-20210130111428915
  • 点击 Administration Console 打开控制台,输入admin/admin 登录
keycloak登录页面
KeyCloak控制台
用户管理

这是Activiti Cloud 的鉴权中心,这里主要管理了用户体系和用户权限以及应用。

访问Modeling

访问8080端口。

好吧,不知道为什么失败了....

image-20210130115154416

使用docker-compose启动服务

修改配置文件

activiti-cloud-examples/docker-compose/.env 文件

DOCKER_IP=192.168.1.88 (这里修改成你电脑的IP地址,不要使用127.0.0.1和localhost)
VERSION=7.1.0-M11
KEYCLOAK_REALM=activiti
KEYCLOAK_RESOURCE=activiti

启动流程图编辑器 Modeling

➜ make modeler
make nginx/up
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d nginx
Starting nginx ... done
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make keycloak/up
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d keycloak
nginx is up-to-date
Starting keycloak ... done
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
ECHO 处于关闭状态。
ECHO 处于关闭状态。
Keycloak path  192.168.1.33/auth
ECHO 处于关闭状态。
make activiti-cloud-modeling activiti-cloud-modeling-backend
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make activiti-cloud-modeling/up
make[2]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d activiti-cloud-modeling
Starting activiti-cloud-modeling ... done
make[2]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make activiti-cloud-modeling-backend/up
make[2]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d activiti-cloud-modeling-backend
Starting activiti-cloud-modeling-backend ... done
make[2]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
ECHO 处于关闭状态。
ECHO 处于关闭状态。
Modeling app: http://192.168.1.33/modeling
ECHO 处于关闭状态。
docker 容器启动情况

访问keycloak: http://$DOCKER_IP//auth/ 默认账号是 admin/admin

访问modeling: http://$DOCKER_IP/modeling。默认账号:modeler/password

单点登录页面
image-20210130113831757

启动应用

➜ make application
make nginx/up
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d nginx
nginx is up-to-date
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make keycloak/up
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d keycloak
nginx is up-to-date
keycloak is up-to-date
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
ECHO 处于关闭状态。
ECHO 处于关闭状态。
Keycloak path  192.168.1.33/auth
ECHO 处于关闭状态。
make rabbitmq/up
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d rabbitmq
rabbitmq is up-to-date
make[1]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make example-runtime-bundle example-cloud-connector activiti-cloud-query activiti-cloud-audit activiti-cloud-notifications-graphql 
make[1]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make example-runtime-bundle/up
make[2]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d example-runtime-bundle
Starting docker-compose_activiti-postgres_1 ... 
rabbitmq is up-to-date
nginx is up-to-date   
Starting docker-compose_activiti-postgres_1 ... done
Starting example-runtime-bundle             ... done
make[2]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make example-cloud-connector/up
make[2]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d example-cloud-connector
rabbitmq is up-to-date
nginx is up-to-date
keycloak is up-to-date
Starting example-cloud-connector ... done
make[2]: Leaving directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
make activiti-cloud-query/up
make[2]: Entering directory 'D:/project/demo/activiti-cloud-examples/docker-compose'
docker-compose up -d activiti-cloud-query
nginx is up-to-date
docker-compose_activiti-postgres_1 is up-to-date
rabbitmq is up-to-date
keycloak is up-to-date
Starting activiti-cloud-query ... done
➜ 

启动之后,可以将 activiti-cloud-examples / Activiti v7 REST API.postman_collection.json导入到Postman

配置Postman

image-20210129112511283
添加全局变量
变量名 变量值 变量说明
gateway http://192.168.1.33 网关地址,即你自己电脑的IP(DOCKER_IP)
idm http://192.168.1.33 鉴权地址,identity Manager地址
realm activiti .env文件中填写的 KEYCLOAK_REALM
开始测试

完成上面的步骤之后,就可以先调用 keycloak中的接口获取token(访问凭证)。然后就可以调用其他接口了。

总结

总得来说就是体验下ActivitiCloud, 目前相关的文档记录的比较少,可能是国内使用的比较少或者是还不够稳定吧。记录的原因其实也是自己在部署示例的过程中遇到了很多坑,包括docker启动服务的时候modeling不能用带带。总得来说,虽然只是浅尝辄止,但是可能大致了解了Activiti7到底是想干嘛的吧。

你可能感兴趣的:(记ActivitiCloud的一次体验)