org.hippoecm.repository.api.Workflow类的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(10.4k)|赞(0)|评价(0)|浏览(128)

本文整理了Java中org.hippoecm.repository.api.Workflow类的一些代码示例,展示了Workflow类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Workflow类的具体详情如下:
包路径:org.hippoecm.repository.api.Workflow
类名称:Workflow

Workflow介绍

[英]A workflow is a set of procedures that can be performed on a document in the repository. These procedures can be accessed by obtaining a Workflow implementation from the WorkflowManager. Calling a method that is defined by an interface extending the Workflow interface causes such a workflow step (procedure) to be executed. Which workflow is active on a document depends amongst others on the type of document. Therefor the Workflowinterface itself defines no workflow actions, but any Workflow instance should be cast to a document-specific interface. The implementation of these document-specific workflows can be provided at run-time to the repository. Therefor there is no standard set of workflows available. There are a number of commonly available workflows, but these are not mandatory. See all known sub-interfaces of the Workflow interface, or org.hippoecm.repository.standardworkflow.FolderWorkflow for an example.

Implementors of this interface should never return subclasses of the Document class in their interface. It is allowed to return an instance of a subclass of a Document, but the repository will force recreating the object returned as a direct instance of an Document.
[中]工作流是可以对存储库中的文档执行的一组过程。可以通过从WorkflowManager获取工作流实现来访问这些过程。调用由扩展工作流接口的接口定义的方法会导致执行这样的工作流步骤(过程)。哪个工作流在文档上处于活动状态取决于文档的类型。因此,Workflowinterface本身不定义工作流操作,但任何工作流实例都应转换为特定于文档的接口。这些特定于文档的工作流的实现可以在运行时提供给存储库。因此,没有可用的标准工作流集。有许多常用的工作流,但它们不是强制性的。查看工作流界面或组织的所有已知子界面。河马。存储库。标准工作流程。FolderWorkflow就是一个例子。
此接口的实现者不应在其接口中返回文档类的子类。允许返回文档子类的实例,但存储库将强制重新创建作为文档直接实例返回的对象。

代码示例

代码示例来源:origin: org.onehippo.cms7/hippo-addon-channel-manager-content-service

private static boolean isActionAvailable(final Workflow workflow, final String action) {
  try {
    final Map<String, Serializable> hints = workflow.hints();
    return hints.containsKey(action) && ((Boolean) hints.get(action));
  } catch (WorkflowException | RemoteException | RepositoryException e) {
    log.warn("Failed reading hints from workflow", e);
  }
  return false;
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-workflow-frontend

private static boolean isWorkflowMethodAvailable(final Workflow workflow, final String methodName) throws RepositoryException, RemoteException, WorkflowException {
  final Serializable hint = workflow.hints().get(methodName);
  return hint == null || Boolean.parseBoolean(hint.toString());
}

代码示例来源:origin: org.onehippo.cms7/hippo-addon-channel-manager-content-service

private Map<String, Serializable> getHints(Workflow workflow, Map<String, Serializable> contextPayload) {
    try {
      return Optional.of(workflow.hints()).map(hints -> {
        final Map<String, Serializable> hintsCopy = new HashMap<>(hints);
        if (contextPayload != null) {
          hintsCopy.putAll(contextPayload);
        }
        return hintsCopy;
      }).orElse(new HashMap<>());
    } catch (WorkflowException | RemoteException | RepositoryException e) {
      log.warn("Failed reading hints from workflow", e);
    }
    return new HashMap<>();
  }
}

代码示例来源:origin: org.onehippo.ecm.hst.testsuite.sandbox/hst-jaxrs

public WorkflowContent(Workflow workflow) throws Exception {
  hints = new HashMap<String, String>();
  
  for (Map.Entry<String, Serializable> entry : workflow.hints().entrySet()) {
    hints.put(entry.getKey(), stringifyHintValue(entry.getValue()));
  }
  
  interfaceNames = new LinkedList<String>();
  List<Class> intrfcs = ClassUtils.getAllInterfaces(workflow.getClass());
  
  for (Class intrfc : intrfcs) {
    if (Workflow.class.isAssignableFrom(intrfc)) {
      interfaceNames.add(intrfc.getName());
    }
  }
}

代码示例来源:origin: org.onehippo.cms7/hippo-repository-engine

public Map<String, Serializable> hints() throws RepositoryException {
  if (this.hints == null) {
    try {
      this.hints = manager.getWorkflow(this).hints();
    } catch (WorkflowException | RemoteException e) {
      throw new RepositoryException("Workflow hints corruption", e);
    }
  }
  return this.hints;
}

代码示例来源:origin: org.onehippo.cms7/hippo-addon-channel-manager-content-service

/**
 * Determine the reason why editing failed for the present workflow.
 *
 * @param workflow workflow for the current user on a specific document
 * @param session  current user's JCR session
 * @return Specific reason or nothing (unknown), wrapped in an Optional
 */
public static Optional<ErrorInfo> determineEditingFailure(final Workflow workflow, final Session session) {
  try {
    final Map<String, Serializable> hints = workflow.hints();
    if (hints.containsKey(HINT_IN_USE_BY)) {
      final Map<String, Serializable> params = new HashMap<>();
      final String userId = (String) hints.get(HINT_IN_USE_BY);
      params.put("userId", userId);
      getUserName(userId, session).ifPresent(userName -> params.put("userName", userName));
      return Optional.of(new ErrorInfo(Reason.OTHER_HOLDER, params));
    }
    if (hints.containsKey(HINT_REQUESTS)) {
      return Optional.of(new ErrorInfo(Reason.REQUEST_PENDING));
    }
  } catch (RepositoryException | WorkflowException | RemoteException e) {
    log.warn("Failed to retrieve hints for workflow '{}'", workflow, e);
  }
  return Optional.empty();
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-workflow-frontend

final Map<String, Set<String>> prototypes = (Map<String, Set<String>>) workflow.hints().get("prototypes");

代码示例来源:origin: org.onehippo.cms7/hippo-cms-editor-frontend

private Map<String, Serializable> obtainWorkflowHints(WorkflowDescriptorModel model) {
  Map<String, Serializable> info = Collections.emptyMap();
  try {
    WorkflowDescriptor workflowDescriptor = model.getObject();
    if (workflowDescriptor != null) {
      WorkflowManager manager = obtainUserSession().getWorkflowManager();
      Workflow workflow = manager.getWorkflow(workflowDescriptor);
      info = workflow.hints();
    }
  } catch (RepositoryException | WorkflowException | RemoteException ex) {
    log.error(ex.getMessage());
  }
  return info;
}

代码示例来源:origin: org.onehippo.cms7/hippo-repository-workflow

private void copyFolderTypes(final Node copiedDoc, final Map<String, Set<String>> prototypes) throws RepositoryException {
    // check if we have all subject folder types;
    Document rootDocument = new Document(rootSubject);
    Workflow internalWorkflow;
    try {
      internalWorkflow = workflowContext.getWorkflow("internal", rootDocument);
      if (!(internalWorkflow instanceof FolderWorkflow)) {
        throw new WorkflowException(
            "Target folder does not have a folder workflow in the category 'internal'.");
      }
      final Map<String, Set<String>> copyPrototypes = (Map<String, Set<String>>) internalWorkflow.hints().get("prototypes");
      if (copyPrototypes != null && copyPrototypes.size() > 0) {
        // got some stuff...check if equal:
        final Set<String> protoKeys = prototypes.keySet();
        final Set<String> copyKeys = copyPrototypes.keySet();
        // check if we have a difference and overwrite
        if (copyKeys.size() != protoKeys.size() || !copyKeys.containsAll(protoKeys)) {
          final String[] newValues = copyKeys.toArray(new String[copyKeys.size()]);
          copiedDoc.setProperty("hippostd:foldertype", newValues);
        }
      }
    } catch (WorkflowException e) {
      log.warn(e.getClass().getName() + ": " + e.getMessage(), e);
    } catch (RemoteException e) {
      log.error(e.getClass().getName() + ": " + e.getMessage(), e);
    }
  }
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-workflow-frontend

@Override
protected void onPopulate() {
  List<IModel<Request>> requests = new ArrayList<>();
  try {
    WorkflowDescriptorModel model = getModel();
    Workflow workflow = model.getWorkflow();
    if (workflow != null) {
      Map<String, Serializable> info = workflow.hints();
      if (info.containsKey("requests")) {
        Map<String, Map<String, ?>> infoRequests = (Map<String, Map<String, ?>>) info.get("requests");
        for (Map.Entry<String, Map<String, ?>> entry : infoRequests.entrySet()) {
          requests.add(new RequestModel(entry.getKey(), entry.getValue()));
        }
      }
    }
  } catch (RepositoryException | WorkflowException | RemoteException ex) {
    log.error(ex.getMessage(), ex);
  }
  removeAll();
  int index = 0;
  for (IModel<Request> requestModel : requests) {
    Item<Request> item = new Item<>(newChildId(), index++, requestModel);
    populateItem(item);
    add(item);
  }
}

代码示例来源:origin: org.onehippo.cms7/hippo-cms-workflow-frontend

private void loadPublishableDocuments(final Node folder, final Set<String> documents) throws RepositoryException, WorkflowException, RemoteException {
  for (Node child : new NodeIterable(folder.getNodes())) {
    if (child.isNodeType(NT_FOLDER) || child.isNodeType(NT_DIRECTORY)) {
      loadPublishableDocuments(child, documents);
    } else if (child.isNodeType(NT_HANDLE)) {
      WorkflowManager workflowManager = ((HippoWorkspace) folder.getSession().getWorkspace()).getWorkflowManager();
      Workflow workflow = workflowManager.getWorkflow(WORKFLOW_CATEGORY, child);
      if (workflow != null) {
        Serializable hint = workflow.hints().get(workflowAction);
        if (hint instanceof Boolean && (Boolean) hint) {
          documents.add(child.getIdentifier());
        }
      }
    }
  }
}

代码示例来源:origin: org.onehippo.cms7/hippo-addon-publication-workflow-frontend

Map<String, Serializable> info = workflow.hints();
if (info.containsKey("acceptRequest") && info.get("acceptRequest") instanceof Boolean) {
  acceptAction.setVisible(((Boolean)info.get("acceptRequest")).booleanValue());

代码示例来源:origin: org.onehippo.cms7/hippo-addon-publication-workflow-frontend

Map<String, Serializable> info = workflow.hints();
if (!documentNode.hasProperty("hippostd:stateSummary") || (info.containsKey("obtainEditableInstance") &&
                              info.get("obtainEditableInstance") instanceof Boolean &&

代码示例来源:origin: org.onehippo.cms7/hippo-addon-publication-workflow-frontend

Map<String, Serializable> info = workflow.hints();
if (!documentNode.hasProperty("hippostd:stateSummary") || (info.containsKey("obtainEditableInstance") &&
                              info.get("obtainEditableInstance") instanceof Boolean &&

代码示例来源:origin: org.onehippo.cms7/hippo-cms-editor-frontend

if (workflowDescriptor != null) {
  Workflow workflow = manager.getWorkflow(workflowDescriptor);
  Map<String, Serializable> info = workflow.hints();
  if (info.containsKey("commit")) {
    Object commitObject = info.get("commit");

代码示例来源:origin: org.onehippo.cms7/hippo-repository-workflow

"Target folder does not have a folder workflow in the category 'internal'.");
Map<String, Set<String>> prototypes = (Map<String, Set<String>>) internalWorkflow.hints().get("prototypes");
if (prototypes == null) {
  throw new WorkflowException("No prototype hints available in workflow of target folder.");

代码示例来源:origin: org.onehippo.cms7/hippo-cms-editor-frontend

if (workflowDescriptor != null) {
  Workflow workflow = manager.getWorkflow(workflowDescriptor);
  Map<String, Serializable> info = workflow.hints();
  if (info.containsKey("edit")) {
    Object editObject = info.get("edit");

相关文章