activiti使用form表单引擎,生成form表单定义数据
项目地址:activiti-workflow
对于审批流,可以通过activiti的form引擎,定义表单信息。先设计表单信息,然后在设计流程时关联表单。
本文主要介绍在保存表单数据时踩过的坑,使用activiti的版本为6.0.0。
form表介绍:
- act_fo_form_definition :表单定义表
- act_fo_form_deployment:表单部署表
- act_fo_form_resource:表单源数据表
activiti提供了表单引擎的service,用于操作表单。表单数据的保存可以通过processEngine.getFormEngineRepositoryService().createDeployment().addFormDefinition(resourceName, formDefinition).name(formName).deploy();
当时开发时通过这种方式保存form表单数据,结果发现,只有act_fo_form_deployment和act_fo_form_resource两个表有数据,act_fo_form_definition 表没有数据。activiti提供的查询表单数的接口如图
要查出表单的定义数据,就要查询act_fo_form_definition ,现在这个表没有数据就会导致,表单数据可以保存进去,没法查出来。
后面跟了deploy的部署方法,在org.activiti.form.engine.impl.deployer.FormDeployer#deploy方法里
public void deploy(FormDeploymentEntity deployment) {
log.debug("Processing deployment {}", deployment.getName());
// The ParsedDeployment represents the deployment, the forms, and the form
// resource, parse, and model associated with each form.
//将表单定义数据封装为部署的数据,主要是这里的build方法
ParsedDeployment parsedDeployment = parsedDeploymentBuilderFactory.getBuilderForDeployment(deployment).build();
formDeploymentHelper.verifyFormsDoNotShareKeys(parsedDeployment.getAllForms())