【Activiti】从入门到放弃——项目实战之动态表单

为什么需要动态表单

分析:每个任务的详情对话框是不变的,还是可变的。

任务详情对话框放的是任务所对应的业务对象,如果是客户报备,里面放的就是客户的信息,如果是请假,里面放的是请假单。

1 不同流程定义所对应任务的任务详情,肯定是不一样的。

2 相同流程定义所对应任务的任务详情,一定是一样的吗?

      有可能不一样

所以不同任务就要有不同任务详情对话框内容。任务是通过流程中节点生成的,而且同一个节点对话框是一样,要想确认每个任务不一样,在定义流程时,在流程节点上定义不同对话框表单

实现方式

1.Fromproperties(表单属性)

通过表单属性的方式定义很多表单项(input),并且既包含结构又包含值

实现步骤:

1、 点击办理任务时,获取表单属性

2、使用代码动态生成表单,和对应下面的表单项的值

  动态生成表单,非常麻烦。

2.FormKey(表单键)

这种方式是提起动态表单键指向提前定义好的结构,并把它绑定到节点上。

  1. 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.结构和业务对象获取

 

猜你喜欢

转载自blog.csdn.net/qq_43097451/article/details/84776946
今日推荐