@Override public DocumentRoute startSubRoute() throws DocumentRouteException { String subRouteModelId = getSubRouteModelId(); // create the instance without starting it DocumentRoutingService service = Framework.getService(DocumentRoutingService.class); List<String> docs = graph.getAttachedDocuments(); String subRouteInstanceId = service.createNewInstance(subRouteModelId, docs, getSession(), false); // set info about parent in subroute DocumentModel subRouteInstance = getSession().getDocument(new IdRef(subRouteInstanceId)); subRouteInstance.setPropertyValue(GraphRoute.PROP_PARENT_ROUTE, getDocument().getParentRef().toString()); subRouteInstance.setPropertyValue(GraphRoute.PROP_PARENT_NODE, getDocument().getName()); subRouteInstance = getSession().saveDocument(subRouteInstance); // set info about subroute in parent document.setPropertyValue(PROP_SUB_ROUTE_INSTANCE_ID, subRouteInstanceId); saveDocument(); // start the sub-route Map<String, Serializable> map = getSubRouteInitialVariables(); service.startInstance(subRouteInstanceId, docs, map, getSession()); // return the sub-route // subRouteInstance.refresh(); DocumentRoute subRoute = subRouteInstance.getAdapter(DocumentRoute.class); return subRoute; }