记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的系统只需要通过调用http接口的方式来实现工作流能力的整合,将工作流业务托管上云。

职责划分表

开始部署

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

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

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

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

官网Guide

硬件配置

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

软件条件

下载示例源码

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到底是想干嘛的吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容