@Override public DocumentRoute saveRouteAsNewModel(DocumentRoute instance, CoreSession session) { DocumentModel instanceModel = instance.getDocument(); DocumentModel parent = persister.getParentFolderForNewModel(session, instanceModel); String newName = persister.getNewModelName(instanceModel); DocumentModel newmodel = persister.saveDocumentRouteInstanceAsNewModel(instanceModel, parent, newName, session); DocumentRoute newRoute = newmodel.getAdapter(DocumentRoute.class); if (!newRoute.isDraft()) { newRoute.followTransition(DocumentRouteElement.ElementLifeCycleTransistion.toDraft, session, false); } newRoute.getDocument().setPropertyValue("dc:title", newName); newRoute.setAttachedDocuments(new ArrayList<>()); newRoute.save(session); return newRoute; }
@Override public DocumentRoute importRouteModel(URL modelToImport, boolean overwrite, CoreSession session) { if (modelToImport == null) { throw new NuxeoException(("No resource containing route templates found")); } Blob blob = new URLBlob(modelToImport); final String file = modelToImport.getFile(); DocumentModel doc; try { FileImporterContext context = FileImporterContext.builder(session, blob, persister.getParentFolderForDocumentRouteModels(session).getPathAsString()) .overwrite(true) .fileName(file) .build(); doc = getFileManager().createOrUpdateDocument(context); } catch (IOException e) { throw new NuxeoException(e); } if (doc == null) { throw new NuxeoException("Can not import document " + file); } // remove model from cache if any model with the same id existed if (modelsChache != null) { modelsChache.invalidate(doc.getName()); } return doc.getAdapter(DocumentRoute.class); }
@Override public void run() { String routeDocId = getRouteModelDocIdWithId(session, routeModelId); DocumentModel model = session.getDocument(new IdRef(routeDocId)); DocumentModel instance = persister.createDocumentRouteInstanceFromDocumentRouteModel(model, session); route = instance.getAdapter(DocumentRoute.class); route.setAttachedDocuments(docIds); route.save(session); Map<String, Serializable> props = new HashMap<>(); props.put(DocumentRoutingConstants.INITIATOR_EVENT_CONTEXT_KEY, initiator); fireEvent(DocumentRoutingConstants.Events.beforeRouteReady.name(), props); route.setReady(session); fireEvent(DocumentRoutingConstants.Events.afterRouteReady.name(), props); route.save(session); if (startInstance) { fireEvent(DocumentRoutingConstants.Events.beforeRouteStart.name(), new HashMap<>()); DocumentRoutingEngineService routingEngine = Framework.getService( DocumentRoutingEngineService.class); routingEngine.start(route, map, session); fireEventAfterWorkflowStarted(route, session); } res[0] = instance.getId(); }