rabbitmq中文手册rabbitmq中文文档
大家好,今天来为大家分享rabbitmq中文手册的一些知识点,和rabbitmq中文文档的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
本文目录
关于java学习,有什么书籍或者教程推荐不啦flowable6.7.2id没有前缀RabbitMQ手册之rabbitmq-env.conf关于java学习,有什么书籍或者教程推荐不啦javaNetty实战课程java高性能分布式RPC教程课程免费下载
链接:https://pan.baidu.com/s/1MpUM62h4nvHnUGMan-R6YA提取码:kvvv
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
flowable6.7.2id没有前缀一表结构
前面一章的关于spring的demo,我们配置好数据库,第一次会自动为我们给的数据库生成对应的表,但是表实在是太多,网上一些资料比较过时,举个例子有的材料列举了二十几个,但实际上我这个版本不止,我随便数了一下都七十几个了。
还有就是Flowable的表很多创建的名字也是为了能“见词知意”,会有前缀或者类似“词根”之类的来拼接。同样很多人的资料博客关于这些,好像抄的是同一份一样。都是常见的几个,你想DMN这些都没人提及。
这里以我现在的flowable表结构做一个大概的总结介绍:
首先上个图
在这里插入图片描述
在这里插入图片描述
大概表名分三段
XXX_XXX_XXXX
第一段
第一段以ACT_APP_APPDEF和FLW_CHANNEL_DEFINITION为例子
ACT代表的Activiti毕竟是同一批人另起的炉灶,另一方面遵循的都是BPMN还要考虑到兼容人家,方便客户转移过来。
ACT_APP_APPDEF看字面意思是应用定义表。
FLW估计就是Flowable的自己的时缩写。
FLW_CHANNEL_DEFINITION这个的意思是,Flowable支持JMS、Kafka和RabbitMQ源和目标,但也可以使用其他适配器类型进行扩展。部署通道定义时,新定义将插入到FLW_CHANNEL_DEFINITION表中,表明翻译过来Flowable的渠道定义。
第二段
APP指的是应用
CO我认为是connection连接的意思,我看内容大部分跟连接数据库这些相关
act_cmmn_:CMMN流程引擎数据
act_dmn_:DMN流程引擎
act_evt_log:事件日志
act_fo_:表单引擎数据
act_ge_:通用数据
act_hi_:表包含历史数据
act_id_:存储与用户身份相关数据
act_prodef_info:流程定义的信息
act_re_:流程定义相关数据的存储库
act_ru__:流程实例运行时数据,流程结束删除数据
第三段
实际上这一段,如果不是太长,有的很多就是整个单词,DEF就是定义的意思,DECISION就是描述的意思,JOB就是任务等,总之就是相对第二段比较容易看出来,像DMN谁能一眼看出来到底是什么。
怎么说呢,太多了这些,基本是遇到问题看那个,记住几个常用的就可以了,不一定都能接触的到,同样也能想象出这个工作流设计要多复杂,我们自己的一些审批任务,基于人家的又是都觉得有点绕,何况人家提供的基础的服务支持设计的。
流程变量
流程实例执行时,要保存数据,这些都被称作变量variable,流程变量分两种:运行时变量,历史变量。
运行时变量
就是还在运行的流程实例的持有的变量,流程实例结束了,这个实例的变量也就在这个表的被剔除了,变成历史变量。
运行时变量,存的表是act_ru_variable
#定义时就设置了变量
ProcessInstancestartProcessInstanceByKey(StringprocessDefinitionKey,Map<String,Object>variables);
#或者运行中设置变量
voidsetVariable(StringexecutionId,StringvariableName,Objectvalue);
voidsetVariableLocal(StringexecutionId,StringvariableName,Objectvalue);
voidsetVariables(StringexecutionId,Map<String,?extendsObject>variables);
voidsetVariablesLocal(StringexecutionId,Map<String,?extendsObject>variables);
#都运行时变量,这个如果实例运行完了就查不到留在这个表
Map<String,Object>getVariables(StringexecutionId);
Map<String,Object>getVariablesLocal(StringexecutionId);
Map<String,Object>getVariables(StringexecutionId,Collection<String>variableNames);
Map<String,Object>getVariablesLocal(StringexecutionId,Collection<String>variableNames);
ObjectgetVariable(StringexecutionId,StringvariableName);
<T>TgetVariable(StringexecutionId,StringvariableName,Class<T>variableClass);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
历史变量
历史变量其实算是比较多的,一般来说除非是运行时实例,自己这边出问题直接看问题看的是运行时的变量(其实这个也能在历史变量中看到)。如果是对已经审批完的流程有疑问基本看的都是历史变量。
历史变量,存的是act_hi_varinst表act_hi_varinst
实例创建,历史变量有对应的变量,实力结束依旧能找到,可以说时变量的“永久”。
historyService.createHistoricVariableInstanceQuery()
.processInstanceId("XXX")
.orderByVariableName.desc()
.list();
1
2
3
4
5
1
2
3
4
5
重要字段介绍
(1)processDefinitionId流程定义Id
(2)processDefinitionKey流程定义Key
(3)processDefinitionName流程定义名称
(4)procInstId流程实例Id
(5)taskId任务Id
(6)executionId执行Id
前三个都是流程定义的,就是说我们发起流程通过ID,key,name这些来发起流程。
你发起流程就会有一个实例,大概的例子就是Java的calss和对象一样,class定义了整体的结构和意义,但是真正用的还是被new出来并且赋值的一个个对象。流程就是class,你定义好了,去处理一个个具体的场景时,就是一个个具体的对象,也就是流程实例。
(4)(5)(6)其实是一级一级的关系,一个流程实例ID可以对应多个执行ID,一个执行对应多个task(这个我后面验证一下,暂时我这边也不太确定),反正大多数材料形容三个的关系是“面-》线-》点”。
表单
表单其实就是定义的部分,就是通过一种简单的方式去构造一个flowable流程引擎。
(看下面的官网最新的英文解释,更对味,可以参照后面某个版本的flowable的中文手册翻译)
TheFlowableFormengineisstructuredinaverysimilarwaytotheFlowableprocessengine.Asaresultpartsofthedocumentationhavearesemblancewiththeirprocessenginecounterpart.
在这里插入图片描述
在这里插入图片描述
在实际业务中,流程伴随着各种各样的表单,Flowable引擎将表单数据统一作为流程变量存入变量表中。所以,对于Flowable引擎,可以完全独立于表单运行,因为可以用流程变量替代表单数据。
但一般的,我们需要结构化的数据,表单仍然是我们推荐的用法。
表单:内置表单,外部表单
内置表单
以请假为例,XML内容
<processid="leave"name="请假流程-内置表单">
<startEventid="start">
<extensionElements>
<flowable:formPropertyid="startDate"name="请假开始事件"type="date"
datePattern="dd-MMM-yyyy"required="true"readable="true"writeable="true"/>
<flowable:formPropertyid="endDate"name="请假结束事件"type="date"
datePattern="dd-MMM-yyyy"required="true"readable="true"writeable="true"/>
<flowable:formPropertyid="reason"name="请假原因"type="string"
required="true"readable="true"writeable="true"/>
<flowable:formPropertyid="leaveType"type="enum"name="请假类型">
<flowable:valueid="personalLeave"name="事假"/>
<flowable:valueid="annualLeave"name="年假"/>
</flowable:formProperty>
</extensionElements>
</startEvent>
</process>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
StartFormDataFormService.getStartFormData(StringprocessDefinitionId)
1
1
或
TaskFormDataFormService.getTaskFormData(StringtaskId)
1
1
外部表单
根据表单文件自行渲染的任务表单,称为外部表单。
<processid="leave"name="请假流程-内置表单">
<startEventid="start"flowable:formKey="form1"></startEvent>
</process>
1
2
3
4
1
2
3
4
外部表单的定义
表单定义文件的后缀为.form。
表单的JSON定义以key、name和description开头。
表单引擎通过属性key来辨别表单在整个表单引擎中的唯一身份。对于来源相同的同一个表单定义的版本系统也是基于属性key运作的。
第二部分是一个数组类型fields,表单定义的字段在这里阐明。
第三部分是可选的,用来定义表单的结果outcomes。
xml文件例子
{
"key":"form1",
"name":"Myfirstform",
"fields":[
{
"id":"input1",
"name":"Input1",
"type":"text",
"required":false,
"placeholder":"empty"
}
],
"outcomes":[
{
"id":"null",
"name":"Accept"
},
{
"id":"null",
"name":"Reject"
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
部署表单
在springboot环境下,resources/forms目录下任何.form后缀的表单定义文件都会被自动部署。
实际应用中,应当让前端流程设计器生成指定格式的表单定义文件,通过与前文提到的接口方式,更新部署流程定义及表单定义资源。
获取及提交表单参数
实际上,渲染表单所需的所有数据都组装在下面两个方法:
StartFormDataFormService.getStartFormData(StringprocessDefinitionId)
TaskFormdataFormService.getTaskFormData(StringtaskId)
1
2
3
1
2
3
ProcessInstanceFormService.submitStartFormData(StringprocessDefinitionId,Map<String,String>properties)
voidFormService.submitTaskFormData(StringtaskId,Map<String,String>properties)
RabbitMQ手册之rabbitmq-env.conf/etc/rabbitmq/rabbitmq-env.conf文件包含变量设置,可以覆盖默认的内置RabbitMQ启动脚本。
该文件被系统shell解释,所以应该由一系列的shell环境变量组成。普通的shell语法是允许的(,因为该文件是使用shell操作符"."来执行的),包括使用"#"开头的行注释。
启动脚本获取变量的值,优先从环境变量获取,其次是文件/etc/rabbitmq/rabbitmq-env.conf,最后是从内置默认值中获取。例如对于RABBITMQ_NODENAME变量设置,
首先从环境中检查RABBITMQ_NODENAME,如果不存在或者等于一个空字符串,然后从/etc/rabbitmq/rabbitmq-env.conf文件中检查NODENAME,如果也不存在或者等于一个空字符串,就使用从启动脚本中的默认值。
该文件中的变量名称,总是等于去掉了RABBITMQ_这个前缀的环境变量名称。例如来自环境中的变量RABBITMQ_NODE_PORT在该文件中就成为了NODE_PORT。
例如:
上述完整的文件/etc/rabbitmq/rabbitmq-env.conf的例子,将覆盖Erlang节点名称,从"rabbit"成为"hare"
关于rabbitmq中文手册到此分享完毕,希望能帮助到您。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。