@Override
public DocumentRoute startSubRoute() throws DocumentRouteException {
String subRouteModelId = getSubRouteModelId();
DocumentRoutingService service = Framework.getService(DocumentRoutingService.class);
List<String> docs = graph.getAttachedDocuments();
String subRouteInstanceId = service.createNewInstance(subRouteModelId, docs, getSession(), false);
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);
document.setPropertyValue(PROP_SUB_ROUTE_INSTANCE_ID, subRouteInstanceId);
saveDocument();
Map<String, Serializable> map = getSubRouteInitialVariables();
service.startInstance(subRouteInstanceId, docs, map, getSession());
DocumentRoute subRoute = subRouteInstance.getAdapter(DocumentRoute.class);
return subRoute;
}