Activiti FormService自定义Task动态表单

一.内置表单

 

1.部署流程+启动流程

	/**
	 * 部署流程
	 */
	@RequestMapping("publishProcess")
	public void publishProcess() {
		String processDefinitionKey=null;
	Deployment deployment=	repositoryService.createDeployment().addClasspathResource("processes/ActivitiDemo.bpmn").deploy();
	System.out.println("部署编号:"+deployment.getId());
	
	List<ProcessDefinition> processDefinition=repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
	for (ProcessDefinition pro : processDefinition) {
		System.out.println("部署的key"+pro.getKey());
		processDefinitionKey=pro.getKey();
		
	}	
	
		// 启动流程    
	    runtimeService.startProcessInstanceByKey(processDefinitionKey);   

	}
	/**
	 * 提交任务表单
	 */
	@RequestMapping("submit")
	public String submitTaskFormData(HttpServletRequest request) {
		String taskId= null;
	List<Task> task=	taskService.createTaskQuery().orderByProcessDefinitionId().desc().list();   //获取最新的任务
		taskId=task.get(0).getId();
		
		//拿到最新的一个任务
				request.setAttribute("title", "我要申请一个审批(动态表单)");
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:ss");
				request.setAttribute("date",sdf.format(new Date()) );
				request.setAttribute("peopleCount", 2);
				TaskFormData taskFormData = formService.getTaskFormData(taskId);//拿取流程启动前的表单字段。
						  Map<String,String> fromValues = new HashMap<String,String>();
						  for (FormProperty fp : taskFormData.getFormProperties()) {
							  String value =String.valueOf(request.getAttribute(fp.getId()));
							  fromValues.put(fp.getId(),value);
						}
                                          //启动流程,提交表单,提交后自动到下一节点,获取数据需要在下一Task获取
						 formService.submitTaskFormData(taskId, fromValues); 
		
		return "提交成功";
	}
/**
	 * 查询任务,应用场景,可以在这里获取不同处理人(组长或经理)待处理的任务信息传给前台显示
	 */
	@RequestMapping("quertTask")
	public void quertTask() {
		String assignee="张三";     //这里是UserTask中设置的assignee    
	List<Task> task=	taskService.createTaskQuery().taskAssignee(assignee).orderByProcessDefinitionId().desc().list();
				 //获取任务信息
					for (Task t : task) {
						System.out.println("任务编号:"+t.getId()+"\n任务名称:"+t.getName()+"\n处理人:"+t.getAssignee()+"\n创建时间:"+t.getCreateTime());
						//获取提交表单的数据
						TaskFormData taskFormData = formService.getTaskFormData(t.getId());//拿取流程启动前的表单字段。
						  for (FormProperty fp : taskFormData.getFormProperties()) {
							  System.out.println("Form Values:"+taskService.getVariable(t.getId(), fp.getId()));
						}
					}
					
					  System.out.println("已启动");
				 
					
	}

优点:能够根据前台传过来的字段匹配自定义Task的内置表单字段,无须自己put单个赋值,不需要提供实体类

缺点:每一个Task节点如需获取内置表单数据,都需要定义内置表单字段,操作麻烦

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值