概述
名词解释
- 业务工程包:指平台提供的内置基础包和内置功能包。
- 设计器工程包:指模型设计器、界面设计器、流程设计器等相关依赖包。
- 父POM:仅声明依赖包版本的pom文件
- 启动工程POM:仅声明具体依赖包的pom文件,一般不用于指定版本。
业务工程部署
Oinone平台向合作伙伴提供前后端业务工程所需的全部依赖,依赖项的具体说明下面会分别介绍。
设计器部署
Oinone平台向合作伙伴提供了两种设计器部署方式:
Docker镜像
:支持amd64
和arm64
两种架构的操作系统。(推荐)JAR包
:与Docker镜像中的内容完全一致。
使用JAR包
直接启动需要使用Oinone专属启动器,Docker镜像
已内置Oinone专属启动器。
PS:如遇到以上部署方式或提供的镜像无法满足部署需求时,请联系Oinone平台售后获取技术支持。
Docker镜像
体验镜像
- 包括所有设计器。
- 内置所有所需中间件,包括Mysql、Redis、Zookeeper、RocketMQ。
适用场景:用于快速体验Oinone平台全部功能
docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.3:TAG
前后端一体部署镜像
- 包括所有设计器。
- 无内置中间件。
适用场景:用于便捷部署Oinone平台的前后端服务
docker pull harbor.oinone.top/oinone/oinone-designer-mini-v5.3:TAG
前后端一体部署镜像 - 流程设计器
- 仅包括流程设计器。
- 无内置中间件。
适用场景:用于便捷部署仅需流程设计器的Oinone平台的前后端服务。
docker pull harbor.oinone.top/oinone/workflow-designer-v5.3:TAG
后端部署镜像
- 用于前后端分别部署,包括所有设计器。
- 仅包含后端服务
- 无内置中间件
适用场景:Kubenetes部署;支持健康检查,前后端分离部署;
docker pull harbor.oinone.top/oinone/designer-backend-v5.3:TAG
前端部署镜像
- 用于前后端分别部署,包括所有设计器。
- 仅包含前端服务
- 无内置中间件
适用场景:Kubenetes部署;支持健康检查,前后端分离部署;
docker pull harbor.oinone.top/oinone/designer-frontend-v5.3:TAG
镜像拉取
以体验镜像为例,Oinone平台提供多种拉取镜像的方式。
# 获取混合架构镜像,支持amd64和arm64架构的操作系统
docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.3:5.3.5
# 仅获取amd64架构镜像
docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.3:5.3.5-amd64
# 仅获取arm64架构镜像
docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.3:5.3.5-arm64
# 获取最新版镜像(每次拉取自动更新)
docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.3
PS:如镜像拉取过慢,可在确定操作系统架构的情况下获取amd64
或arm64
架构镜像。
JAR包获取
- $VERSION:对应镜像版本号
包含所有设计器的后端JAR包下载路径示例
https://oinone-jar.oss-cn-zhangjiakou.aliyuncs.com/install/oinone-designer/pamirs-designer-boot-v5.3-$VERSION.jar
仅包含流程设计器的后端JAR包下载路径示例
https://oinone-jar.oss-cn-zhangjiakou.aliyuncs.com/install/workflow-designer/pamirs-workflow-designer-boot-v5.3-$VERSION.jar
后端依赖
Oinone平台后端使用Maven管理工具对所有依赖包进行版本管理。
版本说明
下面是在每个版本升级说明中提供的所有依赖版本,最新版本请查看对应的最新升级说明文档。
<!-- 平台基础 -->
<oinone.version>5.3.5</oinone.version>
<!-- 设计器 -->
<pamirs.workflow.designer.version>5.3.0</pamirs.workflow.designer.version>
<pamirs.model.designer.version>5.3.2</pamirs.model.designer.version>
<pamirs.ui.designer.version>5.3.3</pamirs.ui.designer.version>
<pamirs.data.designer.version>5.3.0</pamirs.data.designer.version>
<pamirs.dataflow.designer.version>5.3.0</pamirs.dataflow.designer.version>
<pamirs.eip.designer.version>5.3.0</pamirs.eip.designer.version>
<pamirs.microflow.designer.version>5.3.0</pamirs.microflow.designer.version>
依赖版本管理
为了方便合作伙伴更方便的对平台版本进行管理,平台提供了一体化的依赖管理依赖包oinone-bom
。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>pro.shushi</groupId>
<artifactId>oinone-bom</artifactId>
<version>${oinone.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
完整功能依赖示例
以下列举了除了设计器相关依赖外的全部依赖管理项,其通常使用在启动工程POM中。
<dependency>
<groupId>pro.shushi.pamirs</groupId>
<artifactId>a</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.boot</groupId>
<artifactId>pamirs-boot-standard</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.metadata.manager</groupId>
<artifactId>pamirs-metadata-manager</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.framework</groupId>
<artifactId>pamirs-connectors-event-rocketmq</artifactId>
</dependency>
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.framework</groupId>-->
<!-- <artifactId>pamirs-connectors-event-kafka</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.framework</groupId>-->
<!-- <artifactId>pamirs-connectors-event-rabbitmq</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>pro.shushi.pamirs.boot</groupId>
<artifactId>pamirs-distribution-id</artifactId>
</dependency>
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.distribution</groupId>-->
<!-- <artifactId>pamirs-distribution-faas</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.distribution</groupId>-->
<!-- <artifactId>pamirs-distribution-gateway</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.distribution</groupId>-->
<!-- <artifactId>pamirs-distribution-session</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!-- <groupId>pro.shushi.pamirs.distribution</groupId>-->
<!-- <artifactId>pamirs-distribution-session-cd</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-sequence</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-expression-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-core-common</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-resource-core</artifactId>
</dependency>
<!-- user -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-user-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-user-view</artifactId>
</dependency>
<!-- auth -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth3-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth3-view</artifactId>
</dependency>
<!-- auth rbac (since 5.1.14) -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth3-rbac-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth3-rbac-view</artifactId>
</dependency>
<!-- auth compatible -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth-compatible</artifactId>
</dependency>
<!-- business -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-business-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-business-view</artifactId>
</dependency>
<!-- management_center -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-management-center</artifactId>
</dependency>
<!-- message -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-message-core</artifactId>
</dependency>
<!-- translate -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-translate</artifactId>
</dependency>
<!-- file -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-file2-core</artifactId>
</dependency>
<!-- sql_record -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-sql-record-core</artifactId>
</dependency>
<!-- data_audit -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-data-audit-core</artifactId>
</dependency>
<!-- sys_setting -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-sys-setting-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-sys-setting-view</artifactId>
</dependency>
<!-- my_center -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-my-center-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-my-center-view</artifactId>
</dependency>
<!-- apps -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-apps-core</artifactId>
</dependency>
<!-- trigger -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-trigger-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-trigger-bridge-tbschedule</artifactId>
</dependency>
<!-- eip -->
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-eip2-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-eip2-view</artifactId>
</dependency>
<!-- designer_metadata -->
<dependency>
<groupId>pro.shushi.pamirs.designer</groupId>
<artifactId>pamirs-designer-metadata-core</artifactId>
</dependency>
<!-- workflow -->
<dependency>
<groupId>pro.shushi.pamirs.workflow</groupId>
<artifactId>pamirs-workflow-core</artifactId>
</dependency>
<!-- workbench -->
<dependency>
<groupId>pro.shushi.pamirs.work.bench</groupId>
<artifactId>pamirs-work-bench-core</artifactId>
</dependency>
<dependency>
<groupId>pro.shushi.pamirs.work.bench</groupId>
<artifactId>pamirs-work-bench-view</artifactId>
</dependency>
<!-- datavi -->
<dependency>
<groupId>pro.shushi.pamirs.data.visualization</groupId>
<artifactId>pamirs-data-visualization-core</artifactId>
</dependency>
对应的启动模块配置如下:
pamirs:
boot:
modules:
- base # 基础模块(必须)
- sequence # 序列(非应用)
- expression # 表达式(非应用)
- common # 公共资源
- resource # 资源
- user # 用户(非应用,管理页面入口迁移到管理中心)
- auth # 权限(非应用,管理页面入口迁移到管理中心)
- business # 合作伙伴 (非应用,管理页面入口迁移管理中心)
- management_center # 管理中心
- message # 消息
- translate # 翻译
- file # 文件
- sql_record # SDC(非应用)
- data_audit # 业务审计
- sys_setting # 系统配置
- my_center # 个人中心
- apps # 应用中心
- trigger # 触发器
- eip # 集成接口
- designer_metadata # 应用环境(元数据在线导入导出)
- workflow # 工作流
- workbench # 工作台
- datavi # 数据可视化运行(非应用)
前端依赖
Oinone平台前端使用Npm管理工具对所有依赖包进行版本管理。
PS:前端更新最新版本仅需重新npm run clean && npm install
即可获取最新版本。
完整依赖项示例
{
"dependencies": {
"@kunlun/dependencies": "~5.3.0",
"@kunlun/vue-ui-antd": "~5.3.0",
"@kunlun/vue-ui-el": "~5.3.0",
"@kunlun/mobile-dependencies": "~5.3.0",
"@kunlun/vue-ui-mobile-vant": "~5.3.0",
"@kunlun/workflow": "~5.3.0",
"@kunlun/designer-common": "~5.3.0",
"@kunlun/ui-designer-dependencies": "~5.3.0",
"@kunlun/data-designer": "~5.3.0",
"@kunlun/data-designer-core": "~5.3.0",
"@kunlun/data-designer-open-pc": "~5.3.0"
}
}
前后端版本说明
Oinone平台前后端版本号管理基于以下原则:(以版本号z.y.x
为例)
- z:存在重大版本更新时;一般以年为单位进行升级。
- y:功能迭代;
- x:一般功能迭代;Bug修复;
PS:前后端版本总是以中版本进行完全兼容的,即5.1.x
表示可以使用任意版本的前后端启动服务。
健康检查
平台提供了健康检查的统一请求接口/ruok
。
- 启动完成返回
imok
字符串 - 未启动完成返回
no
字符串 - 其他情况返回对应的HTTP状态码,如404、500等。
curl -s http://127.0.0.1:${port}/ruok
PS: 端口号${port}
同server.port
配置端口
Kubernetes后端部署健康检查
准备健康检查脚本
将以下脚本放置在镜像中。/opt/pamirs/bin/healthCheck.sh
为以下示例中所用脚本路径。(平台提供的设计器镜像有内置该脚本,并与示例路径一致)
#!/usr/bin/env bash
function sendDingTalkMessage() {
url=$DING_TALK_ROBOT_URL
if [ -z $url ]; then
return -1
fi
message=$DING_TALK_ROBOT_MESSAGE
if [ -z $message ]; then
return -1
fi
message="$message\\nby kubernetes"
isAtAll=$DING_TALK_ROBOT_IS_AT_ALL
if [ $isAtAll ]; then
isAtAll="true"
message="$message\\n"
else
isAtAll="false"
fi
message="{\"msgtype\": \"text\",\"text\": {\"content\":\"$message\"}, \"isAtAll\": \"${isAtAll}\"}"
curl "${url}" -H 'Content-Type: application/json' -d "${message}"
}
port=$1
callback=$2
OK=$(curl -s http://127.0.0.1:${port}/ruok)
if [ "$OK" == "imok" ]; then
if [ -n $callback ]; then
$callback
fi
exit 0
else
exit 1
fi
配置Kubernetes健康检查
kind: Deployment
apiVersion: apps/v1
spec:
template:
spec:
containers:
- name: designer-backend
env:
- name: DING_TALK_ROBOT_URL # 钉钉机器人发送部署通知消息地址
value: https://oapi.dingtalk.com/robot/send?access_token=xxxxxx
- name: DING_TALK_ROBOT_MESSAGE # 通知信息
value: 后端服务部署启动成功
- name: DING_TALK_ROBOT_IS_AT_ALL # 是否at所有人
value: 'true'
livenessProbe:
exec:
command:
- sh
- '-c'
- sh /opt/pamirs/bin/healthCheck.sh 8080
initialDelaySeconds: 300
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
exec:
command:
- sh
- '-c'
- sh /opt/pamirs/bin/healthCheck.sh 8080
initialDelaySeconds: 60
timeoutSeconds: 5
periodSeconds: 5
successThreshold: 1
failureThreshold: 3
startupProbe:
exec:
command:
- sh
- '-c'
- sh /opt/pamirs/bin/healthCheck.sh 8080 sendDingTalkMessage
initialDelaySeconds: 300
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
PS: 8080
为容器内后端服务端口;sendDingTalkMessage
参数表示启动成功时发送钉钉消息通知。
Kubernetes前端部署健康检查
前端镜像使用nginx作为基础镜像,其健康检查方式与nginx镜像的健康检查方式一致。
kind: Deployment
apiVersion: apps/v1
spec:
template:
spec:
containers:
- name: designer-frontend
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 10
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 10
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
Oinone社区 作者:张博昊原创文章,如若转载,请注明出处:https://doc.oinone.top/yun-wei-shi-jian/20240.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验