snakeflow的springboot项目

Gitee搜索“liuxz/snakerflow”,它是spring boot集成了一款国产工作流引擎snakerflow。

下面是安装步骤:

创建数据库snaker-web,字符集设置成utf8mb4和utf8mb4_generic。不然的话,中文插入不进去。
在这里插入图片描述
运行sql命令

CREATE TABLE wf_process (
    id                VARCHAR(32) PRIMARY KEY NOT NULL comment '主键ID',
    name              VARCHAR(100) comment '流程名称',
    display_Name      VARCHAR(200) comment '流程显示名称',
    type              VARCHAR(100) comment '流程类型',
    instance_Url      VARCHAR(200) comment '实例url',
    state             TINYINT(1) comment '流程是否可用',
    content           LONGBLOB comment '流程模型定义',
    version           INT(2) comment '版本',
    create_Time       VARCHAR(50) comment '创建时间',
    creator           VARCHAR(50) comment '创建人'
)comment='流程定义表';

CREATE TABLE wf_order (
    id                VARCHAR(32) NOT NULL PRIMARY KEY comment '主键ID',
    parent_Id         VARCHAR(32) comment '父流程ID',
    process_Id        VARCHAR(32) NOT NULL comment '流程定义ID',
    creator           VARCHAR(50) comment '发起人',
    create_Time       VARCHAR(50) NOT NULL comment '发起时间',
    expire_Time       VARCHAR(50) comment '期望完成时间',
    last_Update_Time  VARCHAR(50) comment '上次更新时间',
    last_Updator      VARCHAR(50) comment '上次更新人',
    priority          TINYINT(1) comment '优先级',
    parent_Node_Name  VARCHAR(100) comment '父流程依赖的节点名称',
    order_No          VARCHAR(50) comment '流程实例编号',
    variable          VARCHAR(2000) comment '附属变量json存储',
    version           INT(3) comment '版本'
)comment='流程实例表';

CREATE TABLE wf_task (
    id                VARCHAR(32) NOT NULL PRIMARY KEY comment '主键ID',
    order_Id          VARCHAR(32) NOT NULL comment '流程实例ID',
    task_Name         VARCHAR(100) NOT NULL comment '任务名称',
    display_Name      VARCHAR(200) NOT NULL comment '任务显示名称',
    task_Type         TINYINT(1) NOT NULL comment '任务类型',
    perform_Type      TINYINT(1) comment '参与类型',
    operator          VARCHAR(50) comment '任务处理人',
    create_Time       VARCHAR(50) comment '任务创建时间',
    finish_Time       VARCHAR(50) comment '任务完成时间',
    expire_Time       VARCHAR(50) comment '任务期望完成时间',
    action_Url        VARCHAR(200) comment '任务处理的url',
    parent_Task_Id    VARCHAR(32) comment '父任务ID',
    variable          VARCHAR(2000) comment '附属变量json存储',
    version           TINYINT(1) comment '版本'
)comment='任务表';

CREATE TABLE wf_task_actor (
    task_Id           VARCHAR(32) not null comment '任务ID',
    actor_Id          VARCHAR(50) not null comment '参与者ID'
)comment='任务参与者表';

create table wf_hist_order (
    id                VARCHAR(32) not null primary key comment '主键ID',
    process_Id        VARCHAR(32) not null comment '流程定义ID',
    order_State       TINYINT(1) not null comment '状态',
    creator           VARCHAR(50) comment '发起人',
    create_Time       VARCHAR(50) not null comment '发起时间',
    end_Time          VARCHAR(50) comment '完成时间',
    expire_Time       VARCHAR(50) comment '期望完成时间',
    priority          TINYINT(1) comment '优先级',
    parent_Id         VARCHAR(32) comment '父流程ID',
    order_No          VARCHAR(50) comment '流程实例编号',
    variable          VARCHAR(2000) comment '附属变量json存储'
)comment='历史流程实例表';

create table wf_hist_task (
    id                VARCHAR(32) not null primary key comment '主键ID',
    order_Id          VARCHAR(32) not null comment '流程实例ID',
    task_Name         VARCHAR(100) not null comment '任务名称',
    display_Name      VARCHAR(200) not null comment '任务显示名称',
    task_Type         TINYINT(1) not null comment '任务类型',
    perform_Type      TINYINT(1) comment '参与类型',
    task_State        TINYINT(1) not null comment '任务状态',
    operator          VARCHAR(50) comment '任务处理人',
    create_Time       VARCHAR(50) not null comment '任务创建时间',
    finish_Time       VARCHAR(50) comment '任务完成时间',
    expire_Time       VARCHAR(50) comment '任务期望完成时间',
    action_Url        VARCHAR(200) comment '任务处理url',
    parent_Task_Id    VARCHAR(32) comment '父任务ID',
    variable          VARCHAR(2000) comment '附属变量json存储'
)comment='历史任务表';

create table wf_hist_task_actor (
    task_Id           VARCHAR(32) not null comment '任务ID',
    actor_Id          VARCHAR(50) not null comment '参与者ID'
)comment='历史任务参与者表';

create table wf_surrogate (
    id                VARCHAR(32) PRIMARY KEY NOT NULL COMMENT '主键ID',
    process_Name       VARCHAR(100) COMMENT '流程名称',
    operator          VARCHAR(50) COMMENT '授权人',
    surrogate         VARCHAR(50) COMMENT '代理人',
    odate             VARCHAR(64) COMMENT '操作时间',
    sdate             VARCHAR(64) COMMENT '开始时间',
    edate             VARCHAR(64) COMMENT '结束时间',
    state             TINYINT(1) COMMENT '状态'
)COMMENT='委托代理表';
create index IDX_SURROGATE_OPERATOR on wf_surrogate (operator);

create table wf_cc_order (
    order_Id        varchar(32) COMMENT '流程实例ID',
    actor_Id        varchar(50) COMMENT '参与者ID',
    creator         varchar(50) COMMENT '发起人',
    create_Time     varchar(50) COMMENT '抄送时间',
    finish_Time     varchar(50) COMMENT '完成时间',
    status          TINYINT(1)  COMMENT '状态'
)comment='抄送实例表';
create index IDX_CCORDER_ORDER on wf_cc_order (order_Id);

create index IDX_PROCESS_NAME on wf_process (name);
create index IDX_ORDER_PROCESSID on wf_order (process_Id);
create index IDX_ORDER_NO on wf_order (order_No);
create index IDX_TASK_ORDER on wf_task (order_Id);
create index IDX_TASK_TASKNAME on wf_task (task_Name);
create index IDX_TASK_PARENTTASK on wf_task (parent_Task_Id);
create index IDX_TASKACTOR_TASK on wf_task_actor (task_Id);
create index IDX_HIST_ORDER_PROCESSID on wf_hist_order (process_Id);
create index IDX_HIST_ORDER_NO on wf_hist_order (order_No);
create index IDX_HIST_TASK_ORDER on wf_hist_task (order_Id);
create index IDX_HIST_TASK_TASKNAME on wf_hist_task (task_Name);
create index IDX_HIST_TASK_PARENTTASK on wf_hist_task (parent_Task_Id);
create index IDX_HIST_TASKACTOR_TASK on wf_hist_task_actor (task_Id);

alter table wf_task_actor
  add constraint FK_TASK_ACTOR_TASKID foreign key (task_Id)
  references wf_task (id);
alter table wf_task
  add constraint FK_TASK_ORDERID foreign key (order_Id)
  references wf_order (id);
alter table wf_order
  add constraint FK_ORDER_PARENTID foreign key (parent_Id)
  references wf_order (id);
alter table wf_order
  add constraint FK_ORDER_PROCESSID foreign key (process_Id)
  references wf_process (id);
alter table wf_hist_task_actor
  add constraint FK_HIST_TASKACTOR foreign key (task_Id)
  references wf_hist_task (id);
alter table wf_hist_task
  add constraint FK_HIST_TASK_ORDERID foreign key (order_Id)
  references wf_hist_order (id);
alter table wf_hist_order
  add constraint FK_HIST_ORDER_PARENTID foreign key (parent_Id)
  references wf_hist_order (id);
alter table wf_hist_order
  add constraint FK_HIST_ORDER_PROCESSID foreign key (process_Id)
  references wf_process (id);

修改resources/config/develop/application.properties文件

spring.datasource.url = jdbc:mysql://localhost:3306/snaker_web?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root

password改成您的mysql密码。

启动项目。
用postman发送/deploy请求
在这里插入图片描述
将上面的processId替换TestController代码中的processId

@RequestMapping(value = "/getProcess", method = RequestMethod.GET)
    public ResponseData getProcess() {
        String processId = "ad69f85bc8be4391ab689060f0b024ce";
        String operator = "liuxzh_userId";
        Map<String, Object> args = new HashMap<String, Object>();
        args.put("quanju var", "全局变量");

        Order order = snakerEngineFacade.startInstanceById(processId, operator, args);
        if (StringUtils.isNotBlank(order.getId())) {
            System.out.println(order.getId());
            return ResponseData.ok().putDataValue("message",
                    "启动流程实例成功");
        } else {
            return ResponseData.notFound();
        }
    }

发送/getProcess请求、/getAllProcessNames请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法刷题day29:区间合并

目录 引言概念一、挤牛奶二、区间合并三、校门外的树四、管道 引言 区间合并这种题&#xff0c;是比较小的题&#xff0c;一般是不会直接出成一道题来考你的&#xff0c;一般思路都是给一道题&#xff0c;里面包含了各种的点&#xff0c;每一个点都需要一个想区间合并这样的知…

【代表作神刊】经管社科类,稀缺SSCI2区期刊,仅14天见刊,2天检索!!

2024年3月第二周&#xff0c;我处EA-ISET协会推荐发表的文章目前都在有序进行中&#xff0c; 新增检索5篇&#xff0c;SSCI5篇&#xff1b; 新增见刊10篇&#xff0c;SSCI1篇&#xff0c;CNKI5篇&#xff0c;谷歌普刊4篇&#xff1b; 现整理部分录用案例&#xff0c;时间节点…

新书速览|机器学习实战:视频教学版

掌握线性回归、分类、数据降维、聚类、关联规则、协同过滤算法及应用 本书内容 《机器学习实战&#xff1a;视频教学版》基于Python语言详细讲解机器学习算法及其应用&#xff0c;用于读者快速入门机器学习。本书配套示例源代码、PPT课件、教学视频、教学大纲、习题与答案、作者…

Voip测试工具

SIPp是一个测试SIP协议性能的工具软件。这是一个GPL的开放源码软件。 sipp是安装在linux机器上的 SIPp可以用来测试许多真实的SIP设备&#xff0c;如SIP代理&#xff0c;B2BUAs,SIP媒体服务器&#xff0c;SIP/x网关&#xff0c;SIP PBX&#xff0c;等等&#xff0c;它也可以模…

for、while、do...while循环的使用

本篇文章只记录for、while、do...while循环的使用&#xff0c;由于java循环较为简单&#xff0c;所以直接上代码。 1、for循环 需求&#xff1a;循环遍历求和 1-100。 public class Demo {public static void main(String[] args) {int sum 0;for (int i 1; i < 100; i…

技术驱动校园招聘:Java+SpringBoot+Vue的实践之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Linux——线程(2)

在上一篇博客中我介绍了Linux中的线程是什么样的&#xff0c;就如同进程可以通过 fork创建&#xff0c;可以被终止&#xff0c;可以退出一样&#xff0c;线程也可以被我们用户控制&#xff0c;这 篇博客我会介绍线程的控制&#xff0c;并且基于线程的控制所产生的一些问题进行 …

麒麟信安集控云工作站解决方案,驱动电网奔向数字化转型新未来!

集控站是电网运行信息的集中监控中心&#xff0c;实现对电网设备状态感知、缺陷发现、主动预警、风险管控和应急处置的全流程闭环管控&#xff0c;在保障日常供电方面发挥重要作用。此前集控站主要采用网络KVM矩阵&#xff0c;其数字化转型面临延长距离受限、无法实现跨辖区延伸…

Redis及其常用命令(二)

SortedSet类型 在此类型中&#xff0c;每个元素都有一个分数 key -> string value -> sorted([socre,member],[score,member]...) # 添加元素 zadd key score member # 遍历集合 zrange key start stop [withscores] #升序 zrevrange key start stop [withscores]#降序…

二、vue-cli项目搭建

系列文章&#xff1a; vue实战&#xff08;商城后台管理系统&#xff09;&#xff1a;http://t.csdnimg.cn/f6Fqa vue.js :http://t.csdnimg.cn/mljxv 目录 系列文章&#xff1a; vue实战&#xff08;商城后台管理系统&#xff09;&#xff1a;http://t.csdnimg.cn/f6Fqa vue…

O2OA(翱途)流程引擎中如何修改,定制流程的流转记录

使用场景 在特殊使用场景中需要定制流转记录,比如业务上需要修改用户名称,修改时间和意见等. 比如一下场景: 需要将用户"b(company01)"的流转记录修改为"d(company01)". 手工修改 系统默认提供维护工具,在有权限的情况下可以直接进行维护. 通过"左…

AI壁纸号一周增加上千粉丝,轻松变现的成功案例分享

前言 随着AI绘画技术的发展&#xff0c;传统的互联网副业壁纸号在新的技术加持下迎来了第二春。本文将分享一位壁纸号创作者的成功案例&#xff0c;并为大家提供创作门槛和硬件要求等相关信息。 该项目的创作门槛极低&#xff0c;基本上可以由AI完成内容创作。不过&#xff0…

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…

Python编程从入门到实践中的一些误区

1.num 使用num时python报错&#xff0c;后来查过后才知道是因为python不支持自增或自减&#xff0c;可以用1。 2.字符串和非字符串连接 要先将非字符串转换为字符串类型之后才能连接 print&#xff08;2int&#xff08;‘2’&#xff09;&#xff09;#4 3.关键字参数必须在未…

基于springboot+vue的电子商务系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 各种购物网站现在已经成了生活中不可缺少的调味品,比如比较全面的淘宝网,还有可以进行交流问答的小红书APP,还有电脑爱好者者们的天堂京东商城等等。拥有一个功能丰富、操作方便的电子商务销售网站,可以汇…

jenkins部署go应用 基于docker-compose

丢弃旧的的构建 github 拉取代码 指定go的编译版本 编写docker-compose 文件 docker-compose.yaml version: "3"services:game-api:image: centos:7working_dir: /appcontainer_name: game-api #自定义command: "./game-api -f conf/config.yaml"por…

针对二进制储存方式深度解析

int main() { int a[4] { 1, 2, 3, 4 }; int* p1 (int*)(&a 1); int* p2 (int*)((int)a 1); printf("%x %x", p1[-1], *p2); return 0; } X86环境下运行 %x打印16进制。 整形指针1跳过四个字节&#xff0c;((int)a 1)强制类型转换为…

【记录 | 基础动态规划】:数字三角形

数字三角形 链接:[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从 7 → 3 → 8 → 7 →…

python8综合案例

目标&#xff1a; 1 2 代码 文件的内容读取就完成了 数据的封装 就获得了一个日期的总销售额字典、 pingan 健康

3个小技巧,创建高级简历设计

看厌了简历推荐模板平台千篇一律&#xff0c;您有没有考虑过&#xff0c;自己完成一个独特的简历模板制作&#xff1f;为满足大家量身定做的简历需求&#xff0c;与大家分享一个在即时设计中制作简历模板的三个小技巧。 1、复制/粘贴 进入在线设计新时代过后&#xff0c;许多…