技术标签: activity
打开菜单Windows->Preferences->Activiti->Save下流程流程图片的生成方式:
虽然流程引擎在单独部署bpmn文件时会自动生成图片,但在实际开发过程中,自动生成的图片会导致和BPMN中的坐标有出入,在实际项目中展示流程当前位置图会有问题。
所在完成以上配置后,会由我们自己来管理流程图片。在发布流程时把流程规则文件和流程图片一起上传就行了。
2、数据库
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
1) ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
2) ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
3) ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
4) ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
5) ACT_GE_*: 通用数据, 用于不同场景下。
3、 资源库流程规则表
1) act_re_deployment 部署信息表
2) act_re_model 流程设计模型部署表
3) act_re_procdef 流程定义数据表
4、运行时数据库表
1) act_ru_execution 运行时流程执行实例表
2) act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
3) act_ru_task 运行时任务节点表
4) act_ru_variable 运行时流程变量数据表
5、历史数据库表
1) act_hi_actinst 历史节点表
2) act_hi_attachment 历史附件表
3) act_hi_comment 历史意见表
4) act_hi_identitylink 历史流程人员表
5) act_hi_detail 历史详情表,提供历史变量的查询
6) act_hi_procinst 历史流程实例表
7) act_hi_taskinst 历史任务实例表
8) act_hi_varinst 历史变量表
6、组织机构表
act_id_group 用户组信息表
act_id_info 用户扩展信息表
act_id_membership 用户与用户组对应信息表
act_id_user 用户信息表
这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
7、通用数据表
act_ge_bytearray 二进制数据表
act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
8、activiti.cfg.xml
Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
定义数据库配置参数:
l jdbcUrl: 数据库的JDBC URL。
l jdbcDriver: 对应不同数据库类型的驱动。
l jdbcUsername: 连接数据库的用户名。
l jdbcPassword: 连接数据库的密码。
基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):
l jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。
l jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
l jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
l jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
9、 在spring、mybatis集成activiti时,注意mybatis与activiti版本冲突问题,如后台报”order by order by”错误时,原因就是由于mybatis和spring版本的冲突问题。如下图
|
10、 引擎api
|
processEngines.getDefaultProcessEngine()会在第一次被调用时初始并构建 process engine, 接下来对该方法的调用返回的都是同一个流程引擎。 利用 ProcessEngines.init()、 ProcessEngines.destroy()可以正确创建、关闭流程引擎。ProcessEngines 会浏览所有 activiti.cfg.xml 和 activiti-context.xml 文件。对于那些 activiti.cfg.xml 文件, 将以 Activiti 特有的方式来构建流程引擎:
ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream).buildProcessEngine()。 对于那些activiti-context.xml 文件, 将以 Spring 的方式来构建流程引擎:首先,创建 spring 应用上下文;然后,从该上下文中获取
流程引擎。
11、 spring集成activiti:
12、
<!-- 加载activiti引擎 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<bean id="processEngineConfiguration"
class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="druidDataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
</bean>
<!-- activiti的各种服务接口 -->
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
<!-- Druid连接池-->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 1" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="false" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
<!-- 配置监控统计拦截的filters,默认stat,可选mergeStat/wall/log4j -->
<property name="filters" value="stat,wall,log4j" />
<property name="proxyFilters">
<list>
<ref bean="mergeStat_filter" />
<ref bean="log4j-filter" />
</list>
</property>
</bean>
<!--事务管理-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="druidDataSource" />
</bean>
13、 流程变量:在流程实例中,可以将PO对象作为流程变量与流程实例进行关联,不过一定要实现Serializable接口。也可以将po主键作为业务key,在启动流程实例的时候与流程实例建立双向关联:PrcoessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
参考文献gitHub-Banner-java bannerview Android-ConvenientBanner
这里写目录标题单表查询一 查询指定列二 查询全部列三级目录单表更新单表删除单表查询单表查询是仅涉及一个表的查询。SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT语句(Navicat) SELECT语句的含义SELECT语句:根据WHERE字句的条件表达式从FROM子句指定的基本表、视图、派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出对应的属性值形成结果表。GROUP BY子句,将结果按条件进行分组,该属性列值相等的元组为一组, 一 查询指定_navicat 查看数据更新情况
linux-2.6.35在fs2410开发板启动后,通过nfs挂载文件系统,但是rtc不能用,也会在挂载文件系统之前打印如下提示信息:TCP cubic registeredNET: Registered protocol family 1RPC: Registered udp transport module.RPC: Registered tcp transport module.drivers/rtc/hctosys.c: unable to open rtc device (rtc0)IP-Conf
视频太大不知道怎么列举自己看图吧需要的,自行关注微信号:猿码互联(ITyuanma),回复 1 自提
查询硬件是否支持NUMA需要去服务器厂商官网,查询硬件是否支持,以及去CPU生产商官网,查询相关型号的支持情况。hp – 如何检查服务器是否启用了NUMA查询系统层是否开启NUMA通过lscpu 、numactl --hardware、grep -i numa /var/log/dmesg等命令可以看到相关配置。是否开启NUMANUMA关闭方式硬件层关闭BIOS:interleave = Disable / Enable软件层关闭引导的时候关闭ce..._linux查看numa是否开启
不用在意剩余内存的大小.其实很多人都是把使用其他系统的习惯带过来来了.安卓Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知道java,就能更清楚这机制了.其实和java的垃圾回收机制类似,系统有一个规则来回收内存.进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西.当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊.但...
45--ApplicationContext在Spring的框架中,ApplicationContext是最为重要的一个东东。我们可以通过使用ApplicationContext,添加了一些企业级的J2EE特性,如国际化(i18n),定义转换器,设定事件的发布及通知。ApplicationContext实际上是继承BeanFactory接口而来的,所以对于ApplicationContext而
参考:2.安装出现依赖库问题:首先看好自己的版本对应:(本人是Ubuntu14.04 对应的就是ROS Indigo) step1:搜索Software&updates 使用清华的源文件 STEP2sudo apt-get update && sudo apt-get install dpkg就是一般因为dpkg版本低需要更新 否则出现依赖库问题:所以这一步相当重要,曾经被..._ros softwareandupdates
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。输入样例:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen5:1, f
程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环。_python循环体什么意思
升级版SDK和原版SDK区别官方列举的区别如下表格:对比项升级版SDK原版SDK生成方案基于DSL语言 Darabonba。基于模版生成,各编程语言之间采用不同的模版方案,各个语言之间功能完备程度不一致,使用体验不一。语言支持支持主流6门语言的SDK生成。大部分云产品的老版本SDK无法支持超过3门以上的主流语言。SDK示例各语言间的代码在逻辑行为上保持一致,通过中间语言来统一生成,具有校验能力,有效保证示例代码的准确性。各语言间的代码示例不一致,不能保证代码_阿里云短信sdk接入
Hello World’在计算机编程界是一个历史悠久的传统项目。当你学习一个新的编程知识的时候,它是带你入门的一个很好的练习。我们一起开始学习 GitHub! 你将学到:1)创建使用版本库;2)使用和管理分支;3)修改文件并且提交至GitHub上并同步;4)打开和合并一个请求。_使用github改动已有会议网页