Ejemplo n.º 1
0
 public void run(Boolean whileWaiting, HashMap<String, Object> map) {
   for (Split split : splits) {
     if (split.isEnabled()) {
       FlowNode flowNode = FlowController.getSourceFromContainedText(split.getTarget());
       flowNode.getSource().run(whileWaiting, map);
     }
   }
 }
  @Override
  public void serialize(final FlowController controller, final OutputStream os)
      throws FlowSerializationException {
    try {
      // create a new, empty document
      final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
      final DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
      final Document doc = docBuilder.newDocument();

      // populate document with controller state
      final Element rootNode = doc.createElement("flowController");
      doc.appendChild(rootNode);
      addTextElement(
          rootNode, "maxTimerDrivenThreadCount", controller.getMaxTimerDrivenThreadCount());
      addTextElement(
          rootNode, "maxEventDrivenThreadCount", controller.getMaxEventDrivenThreadCount());
      addProcessGroup(rootNode, controller.getGroup(controller.getRootGroupId()), "rootGroup");

      final Element controllerServicesNode = doc.createElement("controllerServices");
      rootNode.appendChild(controllerServicesNode);
      for (final ControllerServiceNode serviceNode : controller.getAllControllerServices()) {
        addControllerService(controllerServicesNode, serviceNode, encryptor);
      }

      final Element reportingTasksNode = doc.createElement("reportingTasks");
      rootNode.appendChild(reportingTasksNode);
      for (final ReportingTaskNode taskNode : controller.getAllReportingTasks()) {
        addReportingTask(reportingTasksNode, taskNode, encryptor);
      }

      final DOMSource domSource = new DOMSource(doc);
      final StreamResult streamResult = new StreamResult(new BufferedOutputStream(os));

      // configure the transformer and convert the DOM
      final TransformerFactory transformFactory = TransformerFactory.newInstance();
      final Transformer transformer = transformFactory.newTransformer();
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");

      // transform the document to byte stream
      transformer.transform(domSource, streamResult);

    } catch (final ParserConfigurationException
        | DOMException
        | TransformerFactoryConfigurationError
        | IllegalArgumentException
        | TransformerException e) {
      throw new FlowSerializationException(e);
    }
  }