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
class GroupFormType extends AbstractFormType

{

????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
propertyValue;

????}

????@Override

????public String convertModelValueToFormValue(Object modelValue)

????{

????????return
modelValue == null ? null : modelValue.toString();

????}

????@Override

????public Object getInformation(String key)

????{

????????if (ActivitiConstants.VALUES_KEY.equals(key))

????????{

????????????return
values;

????????} else

????????{

????????????return
null;

????????}

????}

}

?

扩展FormTypes,使得自定义类型能够处理FormValues


public
class CustomFormTypes extends
FormTypes

{

????@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
new GroupFormType(values);

????????} else
if (ActivitiConstants.SMART_REF_TYPE.equals(formProperty.getType()))

????????{

????????????Map<String, String> values = new LinkedHashMap<String, String>();

????????????for (FormValue formValue : formProperty.getFormValues())

????????????{

????????????????values.put(formValue.getId(), formValue.getName());

????????????}

????????????return
new SmartRefFormType(values);

????????} else

????????{

????????????return
super.parseFormPropertyType(formProperty);

????????}

?

????}

}

?

在流程引擎参数中设置,需要注意的是,如果扩展了FormTypes,则需要把所有的类型都加入到参数中(包括自带类型),否则会报找不到类型


<bean
id="processEngineConfiguration"
class="org.activiti.spring.SpringProcessEngineConfiguration">

<property
name="formTypes">

<bean
class="com.pera.dwf.web.activiti.formtype.CustomFormTypes"
/>

</property>

<property
name="customFormTypes">

<list>

<bean
class="org.activiti.engine.impl.form.StringFormType"
/>

<bean
class="org.activiti.engine.impl.form.LongFormType"
/>

<bean
class="org.activiti.engine.impl.form.DateFormType">

????<constructor-arg
value="yyyy-MM-dd"
/>

</bean>

<bean
class="org.activiti.engine.impl.form.BooleanFormType"
/>

<bean
class="com.pera.dwf.web.activiti.formtype.GroupFormType"></bean>

<bean
class="com.pera.dwf.web.activiti.formtype.SmartRefFormType"></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

}

-

}

?

时间: 2024-10-19 10:46:52

Activiti 使用小结的相关文章

分享本书《Activiti实战》和几个工作流的链接

现在搞工作流的,开源的很多都用Activiti,但相关的中文书其实不多,在当当上找到了一本,暂时没下载到pdf盗版,看了目录不错,特别从试读章节了解了历史,所以分享一下. java 工作流开发框架比较 http://blog.csdn.net/chinarenzhou/article/details/7679148 纵观jBPM:从jBPM3到jBPM5以及Activiti5 http://www.infoq.com/cn/articles/rh-jbpm5-activiti5 工作流引擎Act

工作流学习——Activiti整体认识二步曲

前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过例子的形式来理解.今天我们主要是准备下activiti的环境,在数据库中创建activiti默认的23张表以及activiti核心对象ProcessEngine最后是一个activiti的简单demo. 环境准备 相关软件及版本: jdk版本:Jdk1.8 IDE:eclipse 数据库:mysql A

activiti监听器使用

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业务非常的复杂,通常有如下一些场景: 1.activiti人员动态的分配. 2.当前任务节点完成的时候,指定需要指定下一个节点的处理人(比如,一个请假流程,a员工请假,需要指定下一步需要处理请假流程的领导.). 3.任务节点完成的时候,需要一些复杂业务,(比如当前节点完成的时候,需要调用我们的jms消

activiti uuid主键

1.1.1.  activiti默认主键生成方式 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti中默认的主键生成的方式是:每次从activiti 数据库表 act_ge_property中的next.dbid属性中取值,然后加上自定义的步长.新的值=act_ge_property中的next.dbid值+步长.当然了步长可以自定义,在activiti5.19中步长默认是protected in

工作流学习——Activiti整体认识二步曲 (zhuan)

http://blog.csdn.net/zwk626542417/article/details/46594505 *********************************************** 一.前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过例子的形式来理解.今天我们主要是准备下activiti的环境,在数据库中创建activ

activiti节点跳转

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业务非常的复杂,比如一个简单的采购流程:流程如下: 供应商上新商品的时候,提交商务审核,商务审核通过提交运营审核,审核失败退回供应商. 运营审核成功提交合同签订.交运营审核审核失败退回商务审核或者直接退回供应商. 合同签订审核通过结束,合同签订审核不通过返回运营审核或者退回商务审核,或者退回供应商.

Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API

文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activiti 框架,写写博客的,但是,事情总是纷纷杂杂,一直拖延到现在,这一节原本想要写一下关于 Activiti 的 API ,但是,想着太多这样的博客了,而且显得太生硬,难以理解,所以,这些 API 就在实际的 demo 中来讲解. 一.建立流程图 在开始做工作流之前,我们首先应该把具体的业务在工作流的部署

Activiti(基础)

一. 工作流简述 1.1工作流是什么 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是“**使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现**”.工作流就是通过计算机技术对业务流程进行自动化管理.实现多个参与者按照预定的流程去自动执行业务流程.工作流管理系统的目标:管理工作的流程以确保工作在正确的时间被期望的人员所执行——在自动化进行的业务过程中插入人工的执行和干预. 1.2哪些行业需要

Activiti Linux部署流程图出现乱码

前段时间使用Activiti在本机以及window环境下测试发现流程图正常显示,在linux下汉字变成了小方块. 经网上查找资料: 发现自己的京东云未安装中文字体,由于本人系统activiti配置文件设置的"宋体",因此需在window系统中找到宋体字体复制到linux系统中进行安装. 1,进入C:\Windows\Fonts,找到"宋体 常规"文件simsun.ttc 2,进入cd /usr/java/jdk1.7.0_79/jre/lib/fonts,新建fal