public List<DocumentModel> findRelatedRoute(String documentId) throws ClientException { List<DocumentModel> docs = new ArrayList<DocumentModel>(); if(documentId == null || "".equals(documentId)) { return docs; } List<DocumentRoute> relatedRoutes = getDocumentRoutingService().getDocumentRoutesForAttachedDocument( documentManager, documentId); for (DocumentRoute documentRoute : relatedRoutes) { docs.add(documentRoute.getDocument()); } return docs; }
/** * Checks if a given route is a Graph. * * @since 5.7.2 */ public boolean isRouteGraph(DocumentRoute route) throws ClientException { return route != null && ExecutionTypeValues.graph.toString().equals( (String) route.getDocument().getPropertyValue( DocumentRoutingConstants.EXECUTION_TYPE_PROPERTY_NAME)); }
public boolean canLockRoute() throws ClientException { return Boolean.TRUE.equals(lockActions.getCanLockDoc(getRelatedRoute().getDocument())); }
public boolean canUnlockRoute() throws ClientException { return Boolean.TRUE.equals(lockActions.getCanUnlockDoc(getRelatedRoute().getDocument())); }
@Override public boolean isLockedByCurrentUser(DocumentRoute routeModel, CoreSession session) { LockableDocumentRoute lockableRoute = routeModel.getDocument().getAdapter(LockableDocumentRoute.class); return lockableRoute.isLockedByCurrentUser(session); }
/** * @since 5.6 */ public String getCurrentWorkflowInitiator() throws ClientException { DocumentRoute currentRoute = getRelatedRoute(); if (currentRoute != null) { return (String) currentRoute.getDocument().getPropertyValue( DocumentRoutingConstants.INITIATOR); } return ""; }
public static String getOnLineWorkflowInitiator(DocumentModel currentDoc) throws PropertyException, NuxeoException { String initiator = StringUtils.EMPTY; DocumentRoute route = getOnLineWorkflow(currentDoc); if (route != null) { initiator = (String) route.getDocument().getPropertyValue(DocumentRoutingConstants.INITIATOR); } return initiator; }
public Map<String, Serializable> getCurrentRouteLockDetails() throws ClientException { return lockActions.getLockDetails(getRelatedRoute().getDocument()); }
@Override public void run() { DocumentRoute route = session.getDocument(routeModel.getDocument().getRef()) .getAdapter(DocumentRoute.class); LockableDocumentRoute lockableRoute = route.getDocument().getAdapter(LockableDocumentRoute.class); lockableRoute.unlockDocument(session); } }.runUnrestricted();
public boolean isCurrentRouteLocked() throws ClientException { LockableDocumentRoute lockableRoute = getRelatedRoute().getDocument().getAdapter( LockableDocumentRoute.class); return lockableRoute.isLocked(documentManager); }
protected static void fireEvent(String eventName, Map<String, Serializable> eventProperties, DocumentRoute route, CoreSession session) { eventProperties.put(DocumentRoutingConstants.DOCUMENT_ELEMENT_EVENT_CONTEXT_KEY, route); eventProperties.put(DocumentEventContext.CATEGORY_PROPERTY_KEY, DocumentRoutingConstants.ROUTING_CATEGORY); DocumentEventContext envContext = new DocumentEventContext(session, session.getPrincipal(), route.getDocument()); envContext.setProperties(eventProperties); EventProducer eventProducer = Framework.getService(EventProducer.class); eventProducer.fireEvent(envContext.newEvent(eventName)); }
static public void fireEvent(CoreSession coreSession, DocumentRouteElement element, Map<String, Serializable> eventProperties, String eventName, DocumentModel doc) { if (eventProperties == null) { eventProperties = new HashMap<String, Serializable>(); } eventProperties.put(DocumentRoutingConstants.TASK_ROUTE_INSTANCE_DOCUMENT_ID_KEY, element.getDocumentRoute(coreSession).getDocument().getId()); eventProperties.put(DocumentRoutingConstants.DOCUMENT_ELEMENT_EVENT_CONTEXT_KEY, element); eventProperties.put(DocumentEventContext.CATEGORY_PROPERTY_KEY, DocumentEventCategories.EVENT_DOCUMENT_CATEGORY); DocumentEventContext envContext = new DocumentEventContext(coreSession, coreSession.getPrincipal(), doc); envContext.setProperties(eventProperties); getEventProducer().fireEvent(envContext.newEvent(eventName)); }
public String goBackToRoute() throws ClientException { DocumentModel currentDocument = navigationContext.getCurrentDocument(); DocumentRouteElement docRouteElement = currentDocument.getAdapter(DocumentRouteElement.class); return webActions.setCurrentTabAndNavigate( docRouteElement.getDocumentRoute(documentManager).getDocument(), "TAB_DOCUMENT_ROUTE_ELEMENTS"); }
@Override public void run() { DocumentRoute route = session.getDocument(routeModel.getDocument().getRef()) .getAdapter(DocumentRoute.class); route.validate(session); } }.runUnrestricted();
@Override public void unlockDocumentRoute(DocumentRoute routeModel, CoreSession session) throws DocumentRouteNotLockedException { LockableDocumentRoute lockableRoute = routeModel.getDocument().getAdapter(LockableDocumentRoute.class); if (!lockableRoute.isLockedByCurrentUser(session)) { throw new DocumentRouteNotLockedException(); } lockableRoute.unlockDocument(session); }
/** * @since 5.6 */ public List<Task> getCurrentRouteAllTasks() throws ClientException { TaskService taskService = Framework.getLocalService(TaskService.class); DocumentRoute currentRoute = getRelatedRoute(); if (currentRoute != null) { return taskService.getAllTaskInstances( currentRoute.getDocument().getId(), documentManager); } return null; }
@Override public DocumentRoute unlockDocumentRouteUnrestrictedSession(final DocumentRoute routeModel, CoreSession userSession) { new UnrestrictedSessionRunner(userSession) { @Override public void run() { DocumentRoute route = session.getDocument(routeModel.getDocument().getRef()) .getAdapter(DocumentRoute.class); LockableDocumentRoute lockableRoute = route.getDocument().getAdapter(LockableDocumentRoute.class); lockableRoute.unlockDocument(session); } }.runUnrestricted(); return userSession.getDocument(routeModel.getDocument().getRef()).getAdapter(DocumentRoute.class); }
@Override public DocumentRoute createNewInstance(DocumentRoute model, List<String> docIds, CoreSession session, boolean startInstance) { String id = createNewInstance(model.getDocument().getName(), docIds, session, startInstance); return session.getDocument(new IdRef(id)).getAdapter(DocumentRoute.class); }
@Override public void lockDocumentRoute(DocumentRoute routeModel, CoreSession session) throws DocumentRouteAlredayLockedException { LockableDocumentRoute lockableRoute = routeModel.getDocument().getAdapter(LockableDocumentRoute.class); boolean lockedByCurrent = isLockedByCurrentUser(routeModel, session); if (lockableRoute.isLocked(session) && !lockedByCurrent) { throw new DocumentRouteAlredayLockedException(); } if (!lockedByCurrent) { lockableRoute.lockDocument(session); } }
@Override public void handleEvent(Event event) { DocumentEventContext docCtx = (DocumentEventContext) event.getContext(); DocumentRoute route = (DocumentRoute) docCtx.getProperty(DocumentRoutingConstants.DOCUMENT_ELEMENT_EVENT_CONTEXT_KEY); String initiator = (String) docCtx.getProperty(DocumentRoutingConstants.INITIATOR_EVENT_CONTEXT_KEY); CoreSession session = docCtx.getCoreSession(); // initiator is a step validator route.setCanValidateStep(session, initiator); // initiator can see the route ACP acp = route.getDocument().getACP(); ACL acl = acp.getOrCreateACL(DocumentRoutingConstants.DOCUMENT_ROUTING_ACL); acl.add(new ACE(initiator, SecurityConstants.READ, true)); session.setACP(route.getDocument().getRef(), acp, true); }