本地运行flowable_在CockroachDB上运行Flowable

本地运行flowable

什么是CockroachDB?

CockroachDB是一个我一直关注了很长时间的项目。 这是一个开放源代码的Apache 2许可数据库( Github链接 ),该数据库在很大程度上汲取了Google Spanner白皮书的启发 。 它的核心是可水平扩展的键值存储。 但是,对我们而言真正有趣的是:1)它通过使用Postgres有线协议支持SQL; 2)具有完整的ACID语义和分布式事务。 如果您对他们如何实现这一目标感兴趣,请确保阅读CockroachLabs博客上的技术文章(我承认,有时这并不适合胆怯的人;-)。 请注意,它仍然是分布式系统,因此遵循CAP定理,更具体地说,它是CP系统。

cockroachdb_beta_hero

正如您将在其常见问题解答中所读到的那样,这还处于初期,因为许多功能尚未优化。 但是,既然他们最近增加了对join的基本支持 ,我认为我应该使用Flowable引擎对其进行调整。 在本文中,我将展示在CockroachDB上运行Flowable v6流程引擎有多么容易。

(旁注:我喜欢这个名字!对于不了解它的人:蟑螂是地球上能够幸存于像核爆炸这样的生物中的少数生物之一。相当有弹性的小动物……您也想为您的数据做些什么��)

建立

CockroachDb网站上的入门文档非常清楚,但是为了清楚起见,这是我遵循的步骤:

  • 下载最新的CockroachDB tarball(或您的系统需要的任何文件)
  • 解压并启动第一个节点:
    • ./cockroachdb开始
  • 启动第二个节点:
    • ./cockroach start –store = node2 –port = 26258 –http-port = 8081 –join = localhost:26257
  • 启动第三个节点:
    • ./cockroach start –store = node3 –port = 26259 –http-port = 8082 –join = localhost:26257

欢呼,您现在有一个运行着三个节点的集群,它们将很高兴地在彼此之间复制数据。 有一个很好的管理应用程序,可在8080上运行,并概述了群集:

屏幕1

下一步:我们需要Flowable引擎的数据库。 通过CockroachDB SQL shell创建数据库并向默认用户(maxroach)授予权限:

./cockroachdb sql
> CREATE DATABASE flowable;
> GRANT ALL ON DATABASE flowable TO maxroach;

遗憾的是,CockroachDB尚未实现JDBC元数据功能,我们在Flowable引擎中使用了该功能来自动创建数据库模式。 另外,在某些情况下我无法完全使外键正常工作,因此我复制/粘贴了Flowable SQL脚本并删除了这些脚本。 该文件已上传到Github上 。

同样,这意味着当前您需要“手动”创建数据库模式。 如果您使用的是bash终端,则可以从github下载上面的脚本,并按如下所示将其提供给CockroachDB SQL Shell。 或者,您可以将其粘贴到SQL Shell中。

sql=$(wget https://raw.githubusercontent.com/jbarrez/flowable-cockroachdb-demo/master/engine-schema.sql -q -O -)
./cockroach sql –database=flowable –user=maxroach -e “$sql”

在CockroachDB上可流动

现在数据库已准备就绪。 是时候使用此数据库作为数据存储来启动Flowable引擎。 所有源代码都可以在Github上获得: https : //github.com/jbarrez/flowable-cockroachdb-demo

徽标1

由于CockroachDB使用Postgres有线协议,我们只需要将Postgres JDBC驱动程序添加到pom.xml中 :

<dependency><groupId>org.flowable</groupId><artifactId>flowable-engine</artifactId><version>6.0.0.RC1-SNAPSHOT</version>
</dependency>
<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>9.4.1211.jre7</version>
</dependency>

我在这里使用当前的v6 master分支,尚未发布。 通过克隆flowable-engine项目并在根目录中执行“ mvn clean install -DskipTests”,您可以轻松地自己构建它。 该引擎使用的配置文件非常简单,看起来就像连接到常规Postgres关系数据库一样。 请注意,我有点“欺骗” databaseSchemaUpdate设置以避免自动模式检查。

<property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1:26257/flowable?sslmode=disable" />
<property name="jdbcDriver" value="org.postgresql.Driver" />
<property name="jdbcUsername" value="maxroach" />
<property name="jdbcPassword" value="" /><property name="databaseSchemaUpdate" value="cockroachDb" />

我们将使用的流程定义是一个简单的演示流程,它行使一些任务,例如用户任务,服务任务,子流程,计时器等:

图2

以下代码片段显示了如何以几种不同的方式使用Flowable API。 如果您遵循CockroachDB管理员UI,则会看到流量增加了一段时间。 这里发生的是:

  • 第3-9行:从上方使用配置文件启动Flowable流程引擎,并获取所有服务
  • 第11行:部署流程定义
  • 第15-19行:启动100个流程实例
  • 第24-33行:完成系统中的所有任务
  • 第35行:进行历史查询

因此,如您所见,花哨的东西只是简单地接触各种API并对其进行验证就可以在CockroachDB上运行。

public static void main(String[] args) {ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("flowable.cfg.xml").buildProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();RuntimeService runtimeService = processEngine.getRuntimeService();TaskService taskService = processEngine.getTaskService();HistoryService historyService = processEngine.getHistoryService();repositoryService.createDeployment().addClasspathResource("demo-process.bpmn").deploy();System.out.println("Process definitions deployed = " + repositoryService.createProcessDefinitionQuery().count());Random random = new Random();for (int i=0; i<100; i++) {Map<String, Object> vars = new HashMap<>();vars.put("var", random.nextInt(100));runtimeService.startProcessInstanceByKey("myProcess", vars);}System.out.println("Process instances running = " + runtimeService.createProcessInstanceQuery().count());LinkedList<Task> tasks = new LinkedList<>(taskService.createTaskQuery().list());while (!tasks.isEmpty()) {Task task = taskService.createTaskQuery().taskId(tasks.pop().getId()).singleResult();if (task != null) {taskService.complete(task.getId());}if (tasks.isEmpty()) {tasks.addAll(taskService.createTaskQuery().list());}}System.out.println("Finished all tasks. Finished process instances = "+ historyService.createHistoricProcessInstanceQuery().finished().count());processEngine.close();
}

输出与您期望的完全相同(并且与在关系数据库上运行的输出完全相同)。

Process definitions deployed = 1
Process instances running = 100
Completed 10 tasks
Completed 20 tasks
…
Completed 400 tasks
Finished all tasks. Finished process instances = 100

结论

在CockroachDB上运行Flowable流程引擎几乎是微不足道的,特别是通过出色SQL层和CockroachDB开发人员添加的关系支持。 还有一段路要走(正如您将在他们的博客上阅读的那样),但是现在肯定已经是一项很酷的技术了! 谁又不喜欢不牺牲ACID交易的水平可扩展性呢? 它非常适合流程引擎的用例。

我将继续密切关注CockroachDB项目,因为与Flowable的结合显示出很大的潜力。 而且,正如您所了解的那样,一旦他们开始关注性能,我也非常期待能够运行一些基准测试:-)。

翻译自: https://www.javacodegeeks.com/2016/11/running-flowable-cockroachdb.html

本地运行flowable

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10禁用驱动程序强制签名_图文细说 win10系统未检测到第三个监视器的途径 -win10使用教程...

据统计调查&#xff0c;好多朋友都在为图文细说 win10系统未检测到第三个监视器的途径 的问题而烦恼&#xff0c;小编决定将解决的办法分享给大家。对于电脑菜鸟而言看到图文细说 win10系统未检测到第三个监视器的途径 是很无奈的&#xff0c;试着独自一个人解决图文细说 win10…

安装openstack_午餐前如何安装OpenStack Cloud

安装openstack图1. QuickStart的内部工作原理 云安装程序 如果我告诉您可以在必须停下来吃午餐之前进行OpenStack Cloud环境设置&#xff0c;该怎么办&#xff1f; 您会感到惊讶吗&#xff1f; 你今天可以做吗&#xff1f; 在大多数情况下&#xff0c;我敢打赌您的答案是不…

5e怎么绑定一键跳投_怎么开通淘宝亲情账号 淘宝亲情账号申请步骤【详解】

据官方消息&#xff0c;淘宝将在2月1日上线“亲情账号”功能。那么 淘宝亲情账号怎么开通?在哪申请? 下面为大家介绍下&#xff0c;一起来看看。亲情账号用户在淘宝账号中可以创建“父亲”或“母亲”角色关系&#xff0c;对父母发出注册邀请或直接绑定他们的账号。完成亲情关…

windows功能_你的Windows杀毒软件有这个功能吗?

安全软件首推-火绒&#xff0c;良心之作。比起360安全卫士、腾讯电脑管家&#xff0c;它无广告&#xff0c;无捆绑&#xff0c;无劫持&#xff0c;无弹窗&#xff0c;还免费。我认为最喜人最贴心的功能属它的‘弹窗拦截’了&#xff0c;可以拦截程序推送烦人的弹窗。五大浓缩亮…

base64 二进制流java_读取和base64编码二进制文件

我m trying to read a binary file from the filesystem and then base64 encode it in JavaScript. I使用FileReader API读取数据并找到base64编码器here .我的代码似乎接近工作&#xff0c;问题是生成的base64数据是错误的 . 这是我到目前为止所得到的&#xff1a;function s…

drools dmn_使用Drools的DMN运行时示例

drools dmn正如去年宣布的那样 &#xff0c;Drools 7.0将在合规级别3对DMN模型提供全面的运行时支持。 在撰写本文时&#xff0c;运行时实现已完成&#xff0c;并且该团队现在正在努力进行改进&#xff0c;以进行错误修复和用户友好。 不幸的是&#xff0c;对于7.0版本&#…

笔记本电脑关机后指示灯还亮_汽车仪表常见指示符号之清洗液指示灯,灯亮了怎么办?...

清洗液指示灯就是玻璃水指示灯&#xff0c;用来显示玻璃水的储存量的&#xff0c;平时为熄灭状态&#xff0c;当玻璃水不足时就会点亮提醒驾驶员该添加了。添加后清洗液指示灯还亮的说明出现故障&#xff0c;检查玻璃水电机&#xff0c;相关线路保险丝等&#xff0c;行车中此灯…

xxx钻石商城功能开发需求

文章目录1. 买家小程序端1.1. 首页1.2. 店铺1.2.1. 搜索门店1.2.2. 门店信息1.2.3. 预约试戴1.3. 购物袋1.3.1. 加入购物车1.3.2. 编辑购物车1.4. 个人中心1.4.1. 个人信息1.4.2. 实名认证1.4.3. 我的等级1.4.4. 查看收益1.4.4.1 门店收益1.4.4.1.1查看结算单1.4.4.2 分享收益1…

drools6.5_Drools 6.5.0.Final可用

drools6.5最新和最出色的Drools 6.5.0.Final版本现已可供下载。 这是我们以前的版本的增量版本&#xff0c;重点是一些重要的改进以完善6.x系列。 您可以在此处找到更多详细信息&#xff0c;下载和文档&#xff1a; Drools网站 资料下载 文献资料 发行说明 请阅读下面的一…

c++ vector 一部分_C++ vector 使用注意事项

1、初始化c 11以后新增了大括号{}的初始化方式&#xff0c;需要注意与()的区别,如&#xff1a;std::vector<int> vecTest1(5); //初始化5个元素&#xff0c;每个都是0std::vector<int> vecTest2{ 5 }; //初始化1个元素&#xff0c;值是52、添加元素&#xff1a;pus…

react打包后图片丢失_React中型项目的优化实践

本文可能涉及的内容--项目介绍整个项目大概有60个页面&#xff0c;用到的组件大概150&#xff0c;package里面的依赖大概有70个&#xff0c;应该勉强算得上是一个中型的React的项目了。下面给大家看看我们现在build一次项目的结果--打包时间约150s&#xff0c;打包完之后的资源…

cuba.platform_CUBA Platform 6.3的新增功能

cuba.platform我们很自豪地宣布新版本的CUBA平台和Studio全面上市&#xff01; 也许这是有史以来功能最丰富的平台版本之一–在各个级别上都有重要的变化&#xff1a;体系结构&#xff0c;可扩展性&#xff0c;API可用性和性能。 本文介绍了该平台的主要增强功能。 发行说明中…

如何通过命令终端访问本地/局域网/远程的MySQL数据库_访问数据库_连接数据库_登录数据库

文章目录Windows系统下访问本地MySQL数据库访问远程主机的MySQL数据库本地安装了MySQL数据库本地没有安装MySQLLinux系统下退出数据库登录Windows系统下 访问本地MySQL数据库 使用命令终端访问本地MySQL数据库&#xff0c;打开终端直接输入以下命令语句&#xff1a; mysql …

科大讯飞 jason word_2019科大讯飞全球1024开发者节开幕啦

2019年10月24日&#xff0c;属于开发者的共同节日2019科大讯飞全球1024开发者节于合肥滨湖国际会展中心盛大启幕。以“A.I.前进&#xff0c;拼世界”为主题的本届大会&#xff0c;将集结120位行业大咖主题演讲、20场行业分论坛详解全域A.I.&#xff0c;科大讯飞的1024计划3.0、…

多线程线程池的实现java_如何在Java中实现线程池

多线程线程池的实现java线程是独立程序的执行路径。 在java中&#xff0c;每个线程都扩展java.lang.Thread类或实现java.lang.Runnable。 多线程是指在一个任务中同时执行两个或多个线程。在多线程中&#xff0c;每个任务可以有多个线程&#xff0c;并且这些线程可以异步或同步…

Windows 使用命令执行 sql 脚本文件

文章目录MySQL 数据库方法一&#xff1a;使用 mysql 命令方法二&#xff1a;使用 source 命令Oracle 数据库MySQL 数据库 方法一&#xff1a;使用 mysql 命令 未配置 MySQL 的环境变量&#xff0c;则需要进入 MySQL 的 bin 目录下才能执行 mysql 命令已配置 MySQL 的环境变量…

windows系统连接同局域网下的其他电脑mysql等服务

一、首先设置被连接的mysql服务的 root 用户及访问权限&#xff08;必须确保连接用户拥有不限ip访问权限&#xff09; 参考&#xff1a;https://blog.csdn.net/hkl_Forever/article/details/127543546 二、配置被连接电脑的防火墙、网络共享、设置出入端口规则等 1、打开防火墙…

js如何获取jwt信息_谈房地产公众号如何涨粉?一篇文章让你轻松获取信息

原标题&#xff1a;谈房地产公众号如何涨粉&#xff1f;一篇文章让你轻松获取信息对于房地产企业来说&#xff0c;如何学会运营自己企业的房地产微信公众号是涨粉引流的关键一步&#xff0c;老话说&#xff1a;一步走好&#xff0c;步步稳。值得夸奖的是近几年中高端房地产企业…

java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践

写在前面&#xff1a;就目前而言&#xff0c;在中国的工控市场上&#xff0c;西门子仍然占了很大的份额&#xff0c;因此对于上位机开发而言&#xff0c;经常会存在需要与西门子PLC进行通信的情况。然后对于西门子PLC来说&#xff0c;通信方式有很多&#xff0c;下面简单列举一…