activiti集成自定义表单

本文介绍了在使用Activiti时如何集成自定义表单以满足企业级需求。内容包括:1) 内置和外置表单的不足;2) 在线表单设计器的使用,详细阐述了流程绑定表单、表单数据的保存以及审批时显示表单数据的方法。通过这种方式,可以实现表单的可视化设计,支持数据查询和统计分析,并分离表单数据和流程数据的存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

在使用Activiti时,对于表单的应用应该是大家讨论的最多的话题之一了。Activiti自带了两种模式的表单:内置表单和外置表单。
       内置表单在流程定义文件的XML中用activiti:formProperty属性来定义;外置表单则使用activiti:formkey="form/test.form"来定义,test.form是一份单独的表单文件。
       在流程发起时从request获取提交的表单数据,然后构建为map再通过formService.submitStartFormData(defId, map)提交表单数据到Activiti中保存。
       在实际的使用过程中,这两种模式的表单都不能很好的满足企业级表单应用的需求,例如:

  1. 表单只支持键值对的格式;
  2. 不支持在线可视化进行表单设计;
  3. 表单数据不能进行查询和统计分析;
  4. 表单数据和流程数据无法分库存储。

2.在线表单设计器

使用在线表单设计器设计时,流程与表单按照以下方式进行整合。

2.1流程绑定表单

在进行流程配置时,通过在流程定义的XML中添加如下Element将表单与流程进行绑定。

<ext:globalForm>
  <ext:form formValue="bxbd" name="报销表单" 
  			parentFlowKey="local_" type="inner"/>
</ext:globalForm>
2.2表单数据的保存

       在发起流程和审批待办任务时,通过表单Key可以从数据库中获取表单的html内容从而展示为表单页面。在用户填写了表单数据以后,执行启动流程、审批任务的操作时,将表单数据以json格式提交到后台,后台将数据保存到数据库中,同时将这份数据的主键作为businessKey与该流程实例关联起来。
       通过流程启动事件的监听器来处理表单数据的保存及businessKey的关联。

@Service
@Transactional
public class BpmStartEventListener implements ApplicationListener<BpmStartEvent>, Ordered {
   
	@Resource
	BpmDefinitionAccessor bpmDefinitionAccessor;
	@Resource
	BpmProcessInstanceManager bpmProcessInstanceManager;
	@Resource
	BpmExeStackManager bpmExeStackManager;
	@Resource(name="defaultBpmFormService")
	BpmFormService bpmFormService;

	@Override
	public void onApplicationEvent(BpmStartEvent ev) {
   
		BpmStartModel model = (BpmStartModel) ev.getSource();
		//设置上下文。
		setBuinessKey(model);
		
		if (AopType.PREVIOUS.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值