private void select() { if (model == null && departmentList != null && !departmentList.isEmpty() && departmentList.size() == 1) { for (Department d : departmentList) { addDepartmentData(d); } } else if (model != null) { DepartmentDialogBean deptBean = DepartmentDialogBean.getCurrent(); deptBean.setModel(model); deptBean.openPopup(); } else if (model == null) { // TODO support asynchronous/synchronous start selection? ActivityInstance nextActivityInstance = null; ProcessInstance processInstance = PPUtils.startProcess(processDefinition, true); if (!(ProcessInstanceUtils.isTransientProcess(processInstance) || ProcessInstanceUtils.isCompletedProcess(processInstance))) { nextActivityInstance = PPUtils.activateNextActivityInstance(processInstance); if (nextActivityInstance != null) { Map<String, Object> params = CollectionUtils.newTreeMap(); if (WorklistsBean.getInstance() .isAssemblyLineActivity(nextActivityInstance.getActivity())) { params.put("assemblyLineActivity", true); params.put("worklistsBean", WorklistsBean.getInstance()); } ActivityInstanceUtils.openActivity(nextActivityInstance, params); } } if (nextActivityInstance == null) { MessageDialog.addInfoMessage( MessagePropertiesBean.getInstance() .getParamString("common.processStarted.message", new String[] {getName()})); } } }
private void addDepartmentData(Department department) { Map<String, Object> map = null; if (department != null) { map = CollectionUtils.newMap(); Department department1 = department; do { if (department1 == null) { break; } Organization organization = department1.getOrganization(); if (organization != null) { String s = (String) organization.getAttribute("carnot:engine:dataId"); if (s != null) { ModelCache modelCache = ModelCache.findModelCache(); Model model = modelCache.getModel(organization.getModelOID()); Data data = model.getData(s); String s1 = data.getTypeId(); if ("primitive".equals(s1)) { map.put(s, department1.getId()); } else if ("struct".equals(s1)) { Object obj = map.get(s); if (!(obj instanceof Map)) { obj = CollectionUtils.newMap(); map.put(s, obj); } Map map1 = (Map) obj; String s2 = (String) organization.getAttribute("carnot:engine:dataPath"); if (StringUtils.isEmpty(s2)) { map.put(s, department1.getId()); } else { do { int i; if (0 >= (i = s2.indexOf('/'))) { break; } String s3 = s2.substring(0, i).trim(); s2 = s2.substring(i + 1); if (s3.length() > 0) { Map map2 = (Map) map1.get(s3); if (map2 == null) { map2 = CollectionUtils.newMap(); map1.put(s3, map2); } map1 = map2; } } while (true); s2 = s2.trim(); if (s2.length() > 0) { map1.put(s2, department1.getId()); } } } else { throw new PublicException( (new StringBuilder()) .append("Unsupported data type in manual triggers: ") .append(s1) .toString()); } department1 = department1.getParentDepartment(); } } } while (true); } ActivityInstance nextActivityInstance = PPUtils.activateNextActivityInstance( PPUtils.startProcess(getProcessDefinition(), map, true)); if (nextActivityInstance != null) { ActivityInstanceUtils.openActivity(nextActivityInstance); } else { MessageDialog.addInfoMessage( MessagePropertiesBean.getInstance() .getParamString("common.processStarted.message", new String[] {getName()})); } }