Activiti 使用小结
自定义表单类型
使用动态表单,需要定义表单的字段以及属性,在WEB流程设计器中没有Default字段(Eclipse中有),给设计带来了一定的困难,下面介绍如何在WEB流程设计器中扩展表单。
首先在stencilset.json文件中添加扩展类型,添加的位置就是formproperty_type下,将会出现在下拉框中
|
{ "id" : "formproperty_type", "name" : "Type", "name_de" : "Typ", "type" : "Choice", "value" : "", "width" : 100, "optional" : false, "items" : [ { "id" : "c1", "title" : "String", "title_de" : "String", "value" : "string", "refToView" : "" }, { "id" : "c2", "title" : "Date", "title_de" : "Date", "value" : "date", "refToView" : "" }, { "id" : "c3", "title" : "Long", "title_de" : "Long", "value" : "long", "refToView" : "" }, { "id" : "c4", "title" : "Boolean", "title_de" : "Boolean", "value" : "boolean", "refToView" : "" }, { "id" : "c5", "title" : "Enum", "title_de" : "Enum", "value" : "enum", "refToView" : "" }, { "id" : "c6", "title" : "SmartRef", "title_de" : "SmartRef", "value" : "smartref", "refToView" : "" }, { "id" : "c7", "title" : "Group", "title_de" : "Group", "value" : "group", "refToView" : "" } ] } |

构建自定义的GroupFormType,如果只要一般的扩展,则不用对加入values
|
public { protected Map<String, String> values; public GroupFormType(){} public GroupFormType(Map<String, String> values) { this.values = values; } @Override public String getName() { return ActivitiConstants.GROUP_TYPE; } @Override public Object convertFormValueToModelValue(String propertyValue) { return } @Override public String convertModelValueToFormValue(Object modelValue) { return } @Override public Object getInformation(String key) { if (ActivitiConstants.VALUES_KEY.equals(key)) { return } else { return } } } |
扩展FormTypes,使得自定义类型能够处理FormValues
|
public { @Override public AbstractFormType parseFormPropertyType(FormProperty formProperty) { if (ActivitiConstants.GROUP_TYPE.equals(formProperty.getType())) { Map<String, String> values = new LinkedHashMap<String, String>(); for (FormValue formValue : formProperty.getFormValues()) { values.put(formValue.getId(), formValue.getName()); } return } else { Map<String, String> values = new LinkedHashMap<String, String>(); for (FormValue formValue : formProperty.getFormValues()) { values.put(formValue.getId(), formValue.getName()); } return } else { return }
} } |
在流程引擎参数中设置,需要注意的是,如果扩展了FormTypes,则需要把所有的类型都加入到参数中(包括自带类型),否则会报找不到类型
|
<bean <property <bean </property> <property <list> <bean <bean <bean <constructor-arg </bean> <bean <bean <bean </list> </property> |
经过处理后,最终的动态表单的返回值,可以得到FormValues的值
|
0: { infos: { 5ef89d50-95ff-4e33-8aa1-48df354c6c52: "不合格品文档" } - fp: { id: "Excel1" name: "不合格品文档" type: { name: "smartref" } - value: null required: false writable: true readable: true } - } |
Activiti 使用小结的更多相关文章
- activiti小结
前提:业务流程复杂且流程频繁变更的,建议使用工作流:其他情况不建议使用. activiti(v5.14),工作流引擎,基于jbpm.使用建模语言BPMN2.0进行定义. 工作流数据需要写入数据库,ac ...
- 工作流学习——Activiti整体认识二步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46594505 ***************************************** ...
- activiti搭建(三)整合Modeler
转载请注明源地址:http://www.cnblogs.com/lighten/p/5878169.html 接上一章,activiti工作流引擎虽然运行了起来,但是什么都没有.activiti官方在 ...
- 工作流activiti-01个人小结
最近公司需要开发工作流 使用的是activiti 个人拿着官方的User Guide 摸索了好几天 现做个小结: 对公司的小型OA开发一般用到如下几点: 1.依据客户业务得到业务流程图 可以是xm ...
- activiti uuid主键
1.1.1. activiti默认主键生成方式 ; 下面我们看一下主键的生成策略:主键的生成策略定义在IdGenerator接口中,接口定义如下所示: public interface IdGene ...
- activiti监听器使用
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业 ...
- activiti节点跳转
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业 ...
- j2ee课程设计—基于activiti的请休假系统
前言 课设基于SSM框架,数据库采用mysql,主要业务交给activiti,版本控制利用github. 参考资料: Intellij 部署SSM框架 Activiti就是这么简单 方大师的教材 下文 ...
- 疯狂Workflow讲义——基于Activiti的工作流应用开 PDF 下载
<疯狂Workflow讲义--基于Activiti的工作流应用开> 一:文档获取下载方式: 1:花20CSDN积分:可以下载:http://download.csdn.net/downlo ...
随机推荐
- Perl 数组
Perl 数组 Perl 数组一个是存储标量值的列表变量,变量可以是不同类型. 数组变量以 @ 开头.访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下: 实例 #!/usr/b ...
- LUOGU P2261 [CQOI2007]余数求和(数论分块)
传送门 解题思路 数论分块,首先将 \(k\%a\) 变成 \(k-a*\left\lfloor\dfrac{k}{a}\right\rfloor\)形式,那么\(\sum\limits_{i=1}^ ...
- python和go对比字符串的链式处理
一.什么是链式处理 对数据的操作进行多步骤的处理称为链式处理,链式处理器是一种常见的编程设计,链式处理的开发思想将数据和操作拆分,解耦,让开发者可以根据自己的技术优势和需求,进行系统开发,同时将自己的 ...
- How to Hide Apache Tomcat Version Number from Error Pages
1. 进入tomcat lib目录 cd /usr/local/tomcat7/lib 2. 解压catalina.jar jar xvf catalina.jar 3. 修改ServerInfo.p ...
- 精度试验结果报告Sleep, GetTickCount, timeGetTime, QueryPerformanceCounter
一段简单的代码来实现精度试验 int main() { // 初始化代码 ...... int i = 0; while(i++ < 1000) ...
- JS if 判断
if条件判断 1.语法结构——只判断true,不判断false if(条件判断:结果只有两个true或false) { 条件为true,将执行该代码: } 说明: if是系统关键字,必须全小写. ...
- 第二十篇:记下第一个mysql触发器
项目背景:给一个服务限制访问次数,当用户访问这个服务的次数达到这个值的时候,关闭他的访问权限首先访问信息存在一张表中,记录用户的ip:visitor_ip,服务的id:service_id,访问次数: ...
- C#窗体代码相关笔记
获取ComboBox下拉列表的所有选项值 ArrayList al = new ArrayList(); foreach (string item in this.comboBox2.Items) { ...
- centos zabbix4.0编译安装
zabbix的部署原理 zabbix server需要把监控数据入sql数据库,所以得Mysql环境 zabbix的web是基于php开发的,所以得LNMP环境 部署zabbix server和zab ...
- Python基础知识之3——运算符与表达式
一.概念: 运算符:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.比如10+4=14,其中操作数是 10 和 4,运算符是“+” . Python 语言主要支持运算符类型有:算术运算 ...