public String describe(List<StringToken> itemDescFormat) throws UnifyException { return PackableDoc.describe(itemDescFormat, this); }
@Override protected Object doRetrieve(String property) throws UnifyException { return storage.readFieldValue(property); }
public static PackableDoc unpack(PackableDocConfig config, byte[] packedDoc) throws UnifyException { return PackableDoc.unpack(config, packedDoc, false); }
case CREATE: { Document document = ReflectUtils.newInstance(wfDocBeanMappingDef.getBeanType()); packableDoc.writeTo(rwConfig, document); Object id = genericService.create(document); packableDoc.writeFieldValue(docIdName, id); Object id = packableDoc.readFieldValue(docIdName); genericService.delete(wfDocBeanMappingDef.getBeanType(), id); Object id = packableDoc.readFieldValue(docIdName); Document document = genericService.find(wfDocBeanMappingDef.getBeanType(), id); packableDoc.readFrom(wfDocBeanMappingDef.getRwConfig(), document); Object id = packableDoc.readFieldValue(docIdName); Update update = new Update(); for (PackableDocRWConfig.FieldMapping fieldMapping : wfDocBeanMappingDef.getRwConfig() packableDoc.readFieldValue(fieldMapping.getDocFieldName()));
@Override public ManualWfItem createManualInitItem(String globalTemplateName) throws UnifyException { WfTemplateDef wfTemplateDef = wfTemplates.get(globalTemplateName); WfManualInitDef manualInitDef = wfTemplateDef.getManualInitDef(); return new ManualWfItem(manualInitDef.getWfStepDef(), new PackableDoc(manualInitDef.getWfDocDef().getDocConfig()).preset()); }
private void writeFieldObject(FieldMapping fMapping, PackableDoc pd, Object value) throws UnifyException { FieldConfig fc = pd.config.getFieldConfig(fMapping.getDocFieldName()); if (value != null) { if (fc.isComplex()) { PackableDocConfig fpdConfig = fc.getPackableDocConfig(); if (fc.isArray()) { Object[] beans = DataUtils.convert(Object[].class, value, null); PackableDoc[] fpd = new PackableDoc[beans.length]; for (int i = 0; i < beans.length; i++) { if (beans[i] != null) { fpd[i] = new PackableDoc(fpdConfig, auditable); fpd[i].readFrom(fMapping.getPackableDocRWConfig(), beans[i]); } } pd.values.put(fc.getName(), fpd); } else { PackableDoc fpd = new PackableDoc(fpdConfig, auditable); fpd.readFrom(fMapping.getPackableDocRWConfig(), value); pd.values.put(fc.getName(), fpd); } } else { pd.values.put(fc.getName(), DataUtils.convert(fc.getType(), value, null)); } } else { pd.values.put(fc.getName(), null); } } }
@Override protected void doStore(PackableDoc storage, String property, Object value, Formatter<?> formatter) throws UnifyException { storage.writeFieldValue(property, value, formatter); }
private Long submitToReceptacle(WfTemplateDef wfTemplateDef, WfStepDef trgWfStepDef, Long id, Long ownerId, PackableDoc packableDoc) throws UnifyException { if (!trgWfStepDef.isStart() && !trgWfStepDef.isManual() && !trgWfStepDef.isReceptacle()) { throw new UnifyException(WorkflowModuleErrorConstants.WORKFLOW_SUBMIT_NONSTART_NONRECEPTACLE, trgWfStepDef.getGlobalName()); } // Create workflow item WfItem wfItem = new WfItem(); wfItem.setGlobalTemplateName(wfTemplateDef.getGlobalName()); wfItem.setOwnerId(ownerId); wfItem.setDescription(packableDoc.describe(wfTemplateDef.getWfDocDef().getItemDescFormat())); wfItem.setCreateDt(db().getNow()); Long wfItemId = (Long) db().create(wfItem); WfItemPackedDoc wfItemPackedDoc = new WfItemPackedDoc(); wfItemPackedDoc.setWfItemId(wfItemId); wfItemPackedDoc.setPackedDoc(packableDoc.pack()); db().create(wfItemPackedDoc); packableDoc.setChanged(false); // Push to step WfItemObject workflowItem = new WfItemObject(trgWfStepDef, id, wfItemId, null, null, wfItem.getDescription(), wfItem.getCreateDt(), wfItem.getStepDt(), wfItem.getHeldBy(), packableDoc); WfStepDef settleStep = pushIntoStep(trgWfStepDef, workflowItem); // Return null if item settles in end step if (settleStep.isEnd()) { return null; } return wfItemId; }
public Class<?> getFieldType(String name) throws UnifyException { return pd.getFieldType(name); }
public Set<String> getFieldNames() { return pd.getFieldNames(); }
public String getDocName() { return pd.getConfig().getName(); }
public PackableDoc preset() throws UnifyException { for (FieldConfig fc : config.getFieldConfigs()) { if (fc.isArray()) { Class<?> type = fc.getType().getComponentType(); int len = fc.getRepeat(); Object arr = Array.newInstance(type, len); if (fc.isComplex()) { for (int i = 0; i < len; i++) { Array.set(arr, i, new PackableDoc(fc.getPackableDocConfig(), auditable).preset()); } } values.put(fc.getName(), arr); } else if (fc.isComplex()) { values.put(fc.getName(), new PackableDoc(fc.getPackableDocConfig(), auditable).preset()); } } return this; }
@Override public Long submitToWorkflow(String globalTemplateName, Document... documents) throws UnifyException { WfTemplateDef wfTemplateDef = wfTemplates.get(globalTemplateName); WfStepDef wfStepDef = wfTemplateDef.getStartStep(); // Create and populate packable document Document pDocument = documents[0]; WfDocDef wfDocDef = wfTemplateDef.getWfDocDef(); PackableDoc packableDoc = new PackableDoc(wfDocDef.getDocConfig(), wfStepDef.isAudit()); for (Document document : documents) { packableDoc.readFrom(wfDocDef.getEntryWfDocBeanMappingDef(document.getClass()).getRwConfig(), document); } return submitToReceptacle(wfTemplateDef, wfStepDef, (Long) pDocument.getId(), (Long) pDocument.getOwnerId(), packableDoc); }
@Override protected void doStore(String property, Object value, Formatter<?> formatter) throws UnifyException { storage.writeFieldValue(property, value, formatter); }
@Override protected Object doRetrieve(PackableDoc storage, String property) throws UnifyException { return storage.readFieldValue(property); }
public void writeFieldValue(String name, Object value) throws UnifyException { writeFieldValue(name, value, null); }
@Override public WfItemObject findWorkflowItem(Long wfItemId) throws UnifyException { WfItem wfItem = db().list(WfItem.class, wfItemId); WfStepDef wfStepDef = getWfStepDef(wfItem); WfTemplateDef wfTemplateDef = getWfTemplateDef(wfStepDef); WfItemPackedDoc wfItemPackedDoc = db().find(WfItemPackedDoc.class, wfItemId); PackableDoc pd = PackableDoc.unpack(wfTemplateDef.getWfDocDef().getDocConfig(), wfItemPackedDoc.getPackedDoc(), wfStepDef.isAudit()); WfItemObject workflowItem = new WfItemObject(wfStepDef, wfItem.getDocumentId(), wfItemId, wfItem.getWfItemHistId(), wfItem.getWfHistEventId(), wfItem.getDescription(), wfItem.getCreateDt(), wfItem.getStepDt(), wfItem.getHeldBy(), pd); return workflowItem; }
public <T> T readFieldValue(Class<T> type, String name) throws UnifyException { return pd.readFieldValue(type, name); }
public void writeFieldValue(String name, Object value) throws UnifyException { getPd().writeFieldValue(name, value); }
public Object readFieldValue(String name) throws UnifyException { return pd.readFieldValue(name); }