为什么需要动态表单
分析:每个任务的详情对话框是不变的,还是可变的。
任务详情对话框放的是任务所对应的业务对象,如果是客户报备,里面放的就是客户的信息,如果是请假,里面放的是请假单。
1 不同流程定义所对应任务的任务详情,肯定是不一样的。
2 相同流程定义所对应任务的任务详情,一定是一样的吗?
有可能不一样
所以不同任务就要有不同任务详情对话框内容。任务是通过流程中节点生成的,而且同一个节点对话框是一样,要想确认每个任务不一样,在定义流程时,在流程节点上定义不同对话框表单
实现方式
1.Fromproperties(表单属性)
通过表单属性的方式定义很多表单项(input),并且既包含结构又包含值
实现步骤:
1、 点击办理任务时,获取表单属性
2、使用代码动态生成表单,和对应下面的表单项的值
动态生成表单,非常麻烦。
2.FormKey(表单键)
这种方式是提起动态表单键指向提前定义好的结构,并把它绑定到节点上。
- FormKey定义结果
2.动态获取业务对象
在流程中,获取“业务对象”信息??
从流程变量中,获取预先准备的业务信息:
businessObjType businessObjeId
可以发送Ajax请求到后台获取数据
/customer/getByID?id=1
/leaveBill/getByID?id=1
//统一格式
/businessObjType/loadFormData?businessObjId= businessObjeId
实现:
实现步骤:
步骤:
分析,整体包表单分为表单结构和表单值,
1、表单的结构通过FormKey获取
2 、表单的值通过(businessObjType businessObjId流程变量)拼接一个url,发送一个Ajax请求获取数据
需要三个参数:FormKey,businessObjType ,businessObjId
当点击办理任务时,做以下步骤
1)获取三个参数FormKey,businessObjType ,businessObjid
1.1 点击办理任务,发送一个Ajax请求获取三个参数
1.2 查询任务时,每个任务携带上面的三个参数,可以直接获取。(采纳)
2)通过Formkey加载表单结构--表单键就是一个地址,通过该地址动态加载表单结构
3)通过businessObjType ,businessObjid发送Ajax请求获取数据
4)把表单结构和表单值融合在一起,形成完整的动态表单
前台
1.收集3个参数
2.远程加载表单结构
3.加载数据
4.将表单结构和表单数据融合在一起
后台
1.三个参数收集
2.结构和业务对象获取