/** 把数据先保存到keyvalue里. */ public FormParameter doSaveRecord(Map<String, Object> map, String userId, String tenantId) throws Exception { FormParameter formParameter = new FormParameter(); MultiValueMap multiValueMap = new LinkedMultiValueMap(); for (Map.Entry<String, Object> entry : map.entrySet()) { multiValueMap.add(entry.getKey(), entry.getValue()); } formParameter.setMultiValueMap(multiValueMap); formParameter.setHumanTaskId((String) map.get("taskId")); String businessKey = operationService.saveDraft(userId, tenantId, formParameter); if ((formParameter.getBusinessKey() == null) || "".equals(formParameter.getBusinessKey().trim())) { formParameter.setBusinessKey(businessKey); } Record record = keyValueConnector.findByCode(businessKey); record = new RecordBuilder().build(record, multiValueMap, tenantId); keyValueConnector.save(record); return formParameter; }
@POST @Path("completeTask") @Produces(MediaType.APPLICATION_JSON) public BaseDTO completeTask( @HeaderParam("sessionId") String sessionId, @FormParam("taskId") String taskId, @FormParam("data") String data) throws Exception { logger.info("start : {} {}", taskId, data); String humanTaskId = taskId; PimDevice pimDevice = pimDeviceManager.findUniqueBy("sessionId", sessionId); if (pimDevice == null) { BaseDTO result = new BaseDTO(); result.setCode(401); result.setMessage("auth fail"); return result; } String userId = pimDevice.getUserId(); String tenantId = "1"; Map<String, Object> map = jsonMapper.fromJson(data, Map.class); map.put("taskId", humanTaskId); Record record = null; FormParameter formParameter = null; HumanTaskDTO humanTaskDto = null; FormDTO formDto = null; formParameter = doSaveRecord(map, userId, tenantId); humanTaskId = formParameter.getHumanTaskId(); operationService.saveDraft(userId, tenantId, formParameter); formDto = humanTaskConnector.findTaskForm(humanTaskId); humanTaskDto = humanTaskConnector.findHumanTask(humanTaskId); String processInstanceId = humanTaskDto.getProcessInstanceId(); record = keyValueConnector.findByRef(processInstanceId); record = new RecordBuilder().build(record, formParameter.getMultiValueMap(), tenantId); keyValueConnector.save(record); Xform xform = new XformBuilder() .setStoreConnector(storeConnector) .setContent(formDto.getContent()) .setRecord(record) .build(); Map<String, Object> taskParameters = xform.getMapData(); logger.info("taskParameters : {}", taskParameters); String comment = ""; String action = ""; try { humanTaskConnector.completeTask(humanTaskId, userId, action, comment, taskParameters); } catch (IllegalStateException ex) { logger.error(ex.getMessage(), ex); return null; } if (record == null) { record = new Record(); } record = new RecordBuilder().build(record, STATUS_RUNNING, humanTaskDto.getProcessInstanceId()); keyValueConnector.save(record); BaseDTO result = new BaseDTO(); result.setCode(200); result.setData(data); logger.info("end"); return result; }