Package sos.spooler

Examples of sos.spooler.Order


public class JobSchedulerProcessSubprocessJob extends ProcessOrderJob {


    public boolean spooler_process() {

        Order order = null;
        String orderId = "(none)";
        Subprocess subprocess = null;
       
        try {

            try {
       
                 this.setLogger(new SOSSchedulerLogger(spooler_log));
                if (spooler_job.order_queue() != null) {
                    order = spooler_task.order();
                    orderId = order.id();
               
                    if (order.params().value("configuration_path") != null && order.params().value("configuration_path").length() > 0) {
                        this.setConfigurationPath(order.params().value("configuration_path"));
                    } else if (spooler_task.params().value("configuration_path") != null && spooler_task.params().value("configuration_path").length() > 0) {
                        this.setConfigurationPath(spooler_task.params().value("configuration_path"));
                    }

                    if (order.params().value("configuration_file") != null && order.params().value("configuration_file").length() > 0) {
                        this.setConfigurationFilename(order.params().value("configuration_file"));
                    } else if (spooler_task.params().value("configuration_file") != null && spooler_task.params().value("configuration_file").length() > 0) {
                        this.setConfigurationFilename(spooler_task.params().value("configuration_file"));
                    }

                    // load and assign configuration
View Full Code Here


   
    public boolean spooler_process() {

        try {
            String xml_document = "";
            Order order = spooler_task.order();
            Web_service_operation operation = order.web_service_operation();
           
            if (operation == null) throw  new Exception( "no web service operation available" );
           
            Web_service_request request = operation.request();
            if (request == null) throw new Exception( "no web service request available" );
            Web_service_response response = operation.response();
            if (response == null) throw new Exception( "no web service response available" );

            if (spooler_task.params().value("response_stylesheet") != null && spooler_task.params().value("response_stylesheet").length() > 0) {
                // .. either transform the response from order parameters and payload
                Xslt_stylesheet stylesheet = spooler.create_xslt_stylesheet();
                stylesheet.load_file( spooler_task.params().value("response_stylesheet") );
                xml_document = stylesheet.apply_xml( order.xml() );
                spooler_log.debug3( "content of response transformation:\n" + xml_document );
                response.set_string_content( xml_document );
            } else {
                // .. or send an individual response (use order.params().xml() or order.xml_payload() to access order data)
                response.set_string_content( "<response state=\"success\">" + order.params().xml() + "</response>" );
            }

            response.send();
            spooler_log.info( "web service response successfully processed for order \"" + order.id() + "\"" );

            return true;
        } catch (Exception e) {
            spooler_log.warn( "error occurred processing web service response: " + e.getMessage() );
            return false;
View Full Code Here

              .equals("1"))) {
        includeInterface = true;
      }

      if (spooler_job.order_queue() != null) {
        Order order = spooler_task.order();
        orderParams = order.params();
        String action = orderParams.value("action");
        if (action == null)
          action = "";

        if (orderParams.value("include_interface") != null
View Full Code Here

     * processing
     */
    public boolean spooler_process() {

        SOSConnection localConnection = null;
        Order order = null;
        String command = "";
        orderPayload = null;
        Variable_set realOrderParams = null;
    boolean rc = true;
    boolean resultsetAsWarning = false;
    boolean resultsetAsParameters = false;
    boolean resultsetNameValue = false;
    boolean execReturnsResultSet = false;
    autoCommit = false;
       
        try {
         
          this.setLogger(new SOSSchedulerLogger(spooler_log));
         
          super.prepareParams();         
         
         
          if(orderPayload!=null && orderPayload.var("scheduler_order_is_user_job")!=null && orderPayload.var("scheduler_order_is_user_job").equals("1")){
            userJob = true;
          }
          if(orderPayload!=null && orderPayload.var("resultset_as_warning")!=null && (orderPayload.var("resultset_as_warning").equals("1") || orderPayload.var("resultset_as_warning").equalsIgnoreCase("true"))){
            resultsetAsWarning = true;
          }
          if(orderPayload!=null && orderPayload.var("exec_returns_resultset")!=null && (orderPayload.var("exec_returns_resultset").equals("1") || orderPayload.var("exec_returns_resultset").equalsIgnoreCase("true"))){
            execReturnsResultSet = true;
          }
          if(orderPayload!=null && orderPayload.var("resultset_as_parameters")!=null && (orderPayload.var("resultset_as_parameters").equals("1") || orderPayload.var("resultset_as_parameters").equalsIgnoreCase("true") || orderPayload.var("resultset_as_parameters").equalsIgnoreCase("name_value"))){
            resultsetAsParameters = true;
            if (orderPayload.var("resultset_as_parameters").equalsIgnoreCase("name_value")){
              resultsetNameValue = true;
            }
          }
          if(orderPayload!=null && orderPayload.var("auto_commit")!=null && (orderPayload.var("auto_commit").equals("1") || orderPayload.var("auto_commit").equalsIgnoreCase("true"))){
            autoCommit = true;
          }
         
          try{
            if(userJob){
              checkOldTempUsers();
              localConnection=this.getUserConnection(orderPayload.var("scheduler_order_user_name"), orderPayload.var("scheduler_order_schema"));
            }else{
              localConnection = JobSchedulerManagedObject.getOrderConnection(this.getConnection(), this);
              localConnection.connect();
            }
          } catch (Exception e) {
            throw new Exception("error occurred establishing database connection: " + e.getMessage());
          }
         
          localConnection.setExecReturnsResultSet(execReturnsResultSet);
          try {
            if (orderJob) command = JobSchedulerManagedObject.getOrderCommand(this.getConnection(), this);
        if (command == null || command.length() == 0) {
            command = JobSchedulerManagedObject.getJobCommand(this.getConnection(), this);
        }
       
        if (command == null || command.length() == 0) throw new Exception("command is empty");
      } catch(Exception e){
        throw (new Exception("no database command found: " + e));
      }

      // replace job-specific placeholders
      command = command.replaceAll("\\$\\{scheduler_order_job_name\\}" , this.getJobName());
      command = command.replaceAll("\\$\\{scheduler_order_job_id\\}" , Integer.toString(this.getJobId()));
      command = command.replaceAll("\\$\\{scheduler_id\\}" , spooler.id());

      // replace parameters
      if (orderPayload != null)
      command = JobSchedulerManagedObject.replaceVariablesInCommand(command, orderPayload, getLogger());

            // replace order-specific placeholders
      if(orderJob) {       
        order = spooler_task.order();
        realOrderParams = order.params();
        command = command.replaceAll("\\$\\{scheduler_order_id\\}" , order.id());
        command = command.replaceAll("\\$\\{scheduler_order_managed_id\\}" , "0");
        this.getLogger().info("executing database statement(s) for managed order [" + order.id() + "]: " + command);
      } else {
        this.getLogger().info("executing database statement(s): " + command);
      }
               
      executeStatements(localConnection, command);     
     
      this.getLogger().info("database statement(s) executed.");
      if ((resultsetAsWarning || resultsetAsParameters) && localConnection.getResultSet() != null){
        String warning = "";
              HashMap result = null;
              while( !(result = localConnection.get()).isEmpty()) {
                String orderParamKey = "";
                int columnCount =0;
                warning = "execution terminated with warning:";
                Iterator resultIterator = result.keySet().iterator();
                boolean resultParametersSet = false;               
                while(resultIterator.hasNext()) {
                  columnCount++;
                  String key = (String) resultIterator.next();
                  if (key == null || key.length() == 0) continue;
                  String value = result.get(key).toString();
                  warning += " " + key + "=" + value;
                  if (resultsetAsParameters && order!=null && !resultParametersSet){
                    if (resultsetNameValue){ // name/value pairs from two columns
                      if (columnCount==1){
                        orderParamKey = value;
                      }
                      if (columnCount==2){
                        if (realOrderParams.value(orderParamKey)==null || realOrderParams.value(orderParamKey).length()==0){
                          realOrderParams.set_var(orderParamKey, value);
                        }
                      }
                    }else if (realOrderParams.value(key)==null || realOrderParams.value(key).length()==0){
                      // column name = name, value=value
                      realOrderParams.set_var(key, value);
                      resultParametersSet = true;
                    }
                  }
                }
              }
              if (warning!=null && warning.length()>0 && resultsetAsWarning){
                rc = false;
                this.getLogger().warn(warning);
              }
      }
   
            if (getLogger().hasWarnings() || getLogger().hasErrors()) spooler_task.end();
            return rc && orderJob;
           
        }   
        catch (Exception e) {
          spooler_log.warn("error occurred processing managed order [" + ((order != null) ? "Job Chain: " + order.job_chain().name() + ", ID:"+ order.id() : "(none)") + "] : " + e);
        if (userJob) writeError(e, order);
        spooler_task.end();
        return false;
        }
        finally {
View Full Code Here

    /**
     * Verarbeitung
     */
    public boolean spooler_process() {

        Order order = null;
        HashMap orderAttributes = new HashMap();
        boolean rc = false;
       
        try {
            this.setLogger(new SOSSchedulerLogger(spooler_log));
           
            if (!this.getOrderIterator().hasNext()) {
                this.getLogger().info("no more orders found in queue");
                return false;
            }
           
            orderAttributes = (HashMap) this.getOrderIterator().next();
            if (orderAttributes.isEmpty()) {
                this.getLogger().warn("no order attributes found in queue");
                return false;
            }
            if (orderAttributes.get("job_chain")==null || orderAttributes.get("job_chain").toString().length()==0)
              orderAttributes.put("job_chain", jobChainName);
           
           
            // Job Chain ist evtl. nicht vorhanden
            if ( !this.spooler.job_chain_exists(orderAttributes.get("job_chain").toString())) {
                this.getLogger().warn("no job chain found for this order: " + orderAttributes.get("job_chain").toString());
            }

            boolean deleted=false;
            if(orderAttributes.get("deleted")!= null){
              String sDeleted = orderAttributes.get("deleted").toString();
              deleted = !(sDeleted.trim().equals("0"));
            }
            boolean suspended=false;
            if(orderAttributes.get("suspended")!= null){
              String sSuspended = orderAttributes.get("suspended").toString();
              suspended = !(sSuspended.trim().equals("0"));
            }
            if (deleted){
              getLogger().debug6("deleted=1, deleting order...");
              getConnection().execute("DELETE FROM "+JobSchedulerManagedObject.getTableManagedUserJobs()+
                  " WHERE \"ID\"="+orderAttributes.get("id").toString());
              getConnection().commit();
             
              String answer = spooler.execute_xml("<remove_order job_chain=\""+orderAttributes.get("job_chain").toString()+
                  "\" order=\""+orderAttributes.get("id").toString()+"\" />");
            }else {
            if (suspended){
              getLogger().debug6("suspended=1, deactivating order...");
              String answer = spooler.execute_xml("<remove_order job_chain=\""+orderAttributes.get("job_chain").toString()+
                  "\" order=\""+orderAttributes.get("id").toString()+"\" />");
              getConnection().executeUpdate("UPDATE " + JobSchedulerManagedObject.getTableManagedUserJobs() +
                  " SET \"UPDATED\"=0 WHERE \"ID\"="+orderAttributes.get("id").toString());
                        getConnection().commit();
              return orderIterator.hasNext();
            }
        // do not add orders if job chain exceeds setting for order queue length
        if ( this.getMaxOrderCount() > 0 ) {
          if ( spooler.job_chain(orderAttributes.get("job_chain").toString()).order_count() >= this.getMaxOrderCount() ) {
            this.getLogger().info(".. current order [" + orderAttributes.get("id").toString() +
                          "] skipped: order queue length [" +
                         spooler.job_chain(orderAttributes.get("job_chain").toString()).order_count() +
                         "] exceeds maximum size [" + this.getMaxOrderCount() + "]");
            return this.orderIterator.hasNext();
          }
        }
       
            String command =orderAttributes.get("action").toString();
            String runTime = orderAttributes.get("run_time").toString();
            String hexCommand = JobSchedulerManagedObject.toHexString(command.getBytes("US-ASCII"));
           
            order = spooler.create_order();
            order.set_id(orderAttributes.get("id").toString());            // Auftragsnummer
           
            order.set_state("0");                           // Reihenfolge in der Jobkette
            order.set_priority(Integer.parseInt(orderAttributes.get("priority").toString()));           
           
            if (orderAttributes.get("title") != null)
              order.set_title(orderAttributes.get("title").toString());     // Auftragstitel

           
            sos.spooler.Variable_set orderData = spooler.create_variable_set();
            orderData.set_var("command",   hexCommand);
            orderData.set_var("scheduler_order_schema",      orderAttributes.get("schema").toString());
            orderData.set_var("scheduler_order_user_name",  orderAttributes.get("user_name").toString());
            orderData.set_var("scheduler_order_is_user_job","1");
            if(orderAttributes.get("params")!=null){
              String paramsXml = orderAttributes.get("params").toString();
              if (paramsXml.length()>0){
                Variable_set paramsSet = spooler.create_variable_set();
                paramsSet.set_xml(paramsXml);
                orderData.merge(paramsSet);
              }
            }
           
            order.set_payload(orderData);
            if (runTime!=null && runTime.length()>0){
              if (isOver(runTime)){
                try{
                  getLogger().debug3("Order "+order.id()+" was not executed at specified runtime. Calculating new runtime.");
                } catch (Exception e){}
                JobSchedulerManagedDatabaseJob.updateRunTime(order, getLogger(), getConnection());
                runTime = getConnection().getSingleValue("SELECT \"RUN_TIME\" FROM "+
                      JobSchedulerManagedObject.getTableManagedUserJobs()+ " WHERE \"ID\"=" +
              order.id());
                if (runTime==null || runTime.length()==0){
                  return orderIterator.hasNext();
                }
              }
              getLogger().debug3("Setting order run_time:"+runTime);
              order.run_time().set_xml(runTime);
            }
           
            rc = !(spooler_task.job().order_queue() == null);
           
            /*if (rc == false) {
                this.getLogger().warn("no order in queue");
                return rc;
            }*/
           
           
            try { // to add the order
              //String answer = spooler.execute_xml("<remove_order job_chain=\""+orderAttributes.get("job_chain").toString()+
                //  "\" order=\""+order.id()+"\" />");
              //if(answer.toLowerCase().indexOf("error")>0) throw new Exception(answer);
                //spooler.job_chain(orderAttributes.get("job_chain").toString()).add_order(order);
              spooler.job_chain(orderAttributes.get("job_chain").toString()).add_or_replace_order(order);
            }
            catch (Exception e) {
                // ignore this error, scheduler cares for repeated orders
                this.getLogger().debug6("an ignorable error occurred while removing and adding order: " +
                          e.getMessage());
                this.getLogger().debug6("will try to add order on next run.");
                return orderIterator.hasNext();
            }
           
            getConnection().executeUpdate("UPDATE " + JobSchedulerManagedObject.getTableManagedUserJobs() +
      " SET \"UPDATED\"=0 WHERE \"ID\"="+orderAttributes.get("id").toString());
            getConnection().commit();           

            this.getLogger().info( "order [" + orderAttributes.get("id").toString() +
                            "] added to job chain [" + orderAttributes.get("job_chain").toString() + "]: " +
                            order.title() );
            }
           
            return orderIterator.hasNext();
           
        }   
        catch (Exception e) {
        spooler_log.warn("error occurred processing managed user job" + ((order != null) ? " [" + order.id() + "]" : "") + ": " + e.getMessage());
        spooler_task.end();
        return false;
        }
        finally {
            try { if (this.getConnection() !=  null) this.getConnection().rollback(); } catch (Exception ex) {} // ignore this errror
View Full Code Here

      }

      // order driven or job driven?
      if (spooler_job.order_queue() != null) {
          rc = true;
          Order order = spooler_task.order();
          Variable_set payload = (sos.spooler.Variable_set) order.payload();
          if (payload.var("config_file") != null && payload.var("config_file").length() > 0) {
              this.configFile = payload.var("config_file");
          spooler_log.debug3(".. order parameter [config_file]: " + this.configFile);
          }
      }
View Full Code Here

                    this.getLog().debug3(".. current level is " + currentJobLevel);
                }


               
                Order order = spooler.create_order();
                order.set_id(currentWorkflowOrderId);        // Auftragsnummer
                if (rec.get("title")!=null && rec.get("title").toString().length()>0){
                  order.set_title(rec.get("title").toString());
                } else order.set_title(rec.get("order_id").toString());   // Auftragstitel
                order.set_state(currentJobLevel);            // Position in der Jobkette               

         
                try { // to create order payload
                  String spoolerId = (String) rec.get("spooler_id");
                    String payload = this.getConnection().getClob("SELECT \"PARAMS\" FROM " + JobSchedulerManagedObject.getTableManagedOrders()
                            + " WHERE \"SPOOLER_ID\"" +
                ((spoolerId != null && spoolerId.length()>0) ? "='"+ spoolerId+"'" : " IS NULL")
                            + " AND \"JOB_CHAIN\"='" + rec.get("job_chain").toString() + "'"
                            + " AND \"ORDER_ID\"='" + rec.get("order_id").toString() + "'"
                            );
                           
                    if (payload != null && payload.length() > 0) {
                        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
                        Document payloadDocument = docBuilder.parse(new ByteArrayInputStream(payload.getBytes()));

                        sos.spooler.Variable_set orderData = spooler.create_variable_set();
                 
                        Node node = payloadDocument.getFirstChild();
                        while( node != null  &&  node.getNodeType() != Node.ELEMENT_NODE ) node = node.getNextSibling();

                        if ( node == null ) {
                            throw new Exception("payload contains no xml elements");
                        }
                       
                        Element payloadElement = (Element)node;
                        if (!payloadElement.getNodeName().equals( "params" ) ) 
                            throw new Exception( "element <params> is missing" );
                            
                        node = payloadElement.getFirstChild();
                        while( node != null  &&  node.getNodeType() != Node.ELEMENT_NODE node = node.getNextSibling();
                
                        boolean ascending = false;
                        String parameterName = "";
                        String parameterValue = "";
                       
                        while(node != null) {
                            NamedNodeMap attributes = node.getAttributes();

                            if ( node.getNodeName().equals( "param" ) ) {
                                try {
                                    if (attributes.getNamedItem("name") == null) {
                                        throw new Exception ("attribute <param name=\"...\"> is missing");
                                    }
                                    parameterName = attributes.getNamedItem("name").getNodeValue();
                                } catch (Exception e) {
                                    throw new Exception( "illegal value for attribute group: " + attributes.getNamedItem("name").getNodeValue());
                                }

                                try {
                                    if (attributes.getNamedItem("value") == null) {
                                        throw new Exception ("attribute <param value=\"...\"> is missing");
                                    }
                                    parameterValue = attributes.getNamedItem("value").getNodeValue();
                                } catch (Exception e) {
                                    throw new Exception( "illegal value for attribute: " + attributes.getNamedItem("value").getNodeValue());
                                }
                               
                                orderData.set_var(parameterName, parameterValue);
                               
                            } else if ( node.getNodeName().equals( "params" ) ) {
                                break;
                            }
                           
                            if (node.hasChildNodes() && !ascending) {
                                node = node.getFirstChild();
                            } else  if (node.getNextSibling() != null) {
                                node = node.getNextSibling();
                                ascending = false;
                            } else if (node.getParentNode() != null) {
                                node = node.getParentNode();
                                ascending = true;
                            } else {
                                break;
                            }
                        }

                        // set default order parameters
                        orderData.set_var("scheduler_order_id", order.id());
                        orderData.set_var("scheduler_order_managed_id", this.getConnectionSettings().getLockedSequenceAsString("scheduler", "counter", "scheduler_managed_order_id"));
                        orderData.set_var("scheduler_order_title", order.title());
                        orderData.set_var("scheduler_order_job_chain", currentWorkflowModelName);
                        this.getConnection().commit();

                        order.set_payload(orderData);
                    }
                }
                catch (Exception e) {
                    try { if (this.getConnection() != null) this.getConnection().rollback(); } catch (Exception ex) {}
                    getLog().warn("an error occurred setting the payload: " + e.getMessage());
                }
                try{ // to set the runtime
                  String spoolerId = (String) rec.get("spooler_id");
                    String runtime = this.getConnection().getClob("SELECT \"RUN_TIME\" FROM " + JobSchedulerManagedObject.getTableManagedOrders()
                            + " WHERE \"SPOOLER_ID\"" +
                ((spoolerId != null && spoolerId.length()>0) ? "='"+ spoolerId+"'" : " IS NULL")
                            + " AND \"JOB_CHAIN\"='" + rec.get("job_chain").toString() + "'"
                            + " AND \"ORDER_ID\"='" + rec.get("order_id").toString() + "'"
                            );
                   
                    if (runtime!=null && runtime.length()>0) {
                      if(!validateRuntime(runtime,"Order "+rec.get("order_id"))) continue;
                      getLog().debug3("order.run_time(): ");                     
                      order.run_time().set_xml(runtime);                     
                    }
                } catch(Exception e){
                  getLog().warn("an error occurred setting the runtime: " + e.getMessage());
                }
               
                this.getLog().debug3(".. add order to workflow " + currentWorkflowModelName);              
                try { // to add the order
                  if (orderID.length()>0) {
                    String answer = spooler.execute_xml("<remove_order job_chain=\""+currentWorkflowModelName+
                      "\" order=\""+order.id()+"\" />");                   
                  }

                    //spooler.job_chain(currentWorkflowModelName).add_order(order);
                  spooler.job_chain(currentWorkflowModelName).add_or_replace_order(order);
                   
View Full Code Here

                newParams.set_var(conVarname_ftp_file_path, (remoteDir.endsWith("/") || remoteDir.endsWith("\\") ? remoteDir : remoteDir + "/")
                    + fileName);
                newParams.set_var("ftp_parent_order_id", spooler_task.order().id());
                newParams.set_var("ftp_order_self_destruct", "1");

                Order newOrder = spooler.create_order();
                newOrder.set_state(spooler_task.order().state());
                newOrder.set_params(newParams);

                spooler_task.order().job_chain().add_order(newOrder);

                getLogger().info(
                    "launching order for parallel transfer with parameter: ftp_file_path "
                        + (remoteDir.endsWith("/") || remoteDir.endsWith("\\") ? remoteDir : remoteDir + "/") + fileName);

                spooler.variables().set_var("ftp_order", normalize(spooler_task.order().id()) + "." + normalize(newOrder.id()) + "." + "0");
                spooler.variables().set_var("ftp_check_receive_" + normalize(spooler_task.order().id()) + "." + normalize(newOrder.id()), "0");
              }
            }
            // am aktuellen Auftrag speichern, dass im Wiederholungsfall per setback() nicht erneut Auftr�ge erzeugt werden
            // sollen, sondern dass deren Erledigungszustand gepr�ft wird:
            spooler_task.order().params().set_var(conVarname_ftp_check_parallel, "yes");
View Full Code Here

    /**
     * process single mail order
     */
    public boolean spooler_process() {

        Order order = null;
        Variable_set parameters = null;
        File listFile                         = null;
        File messageFile                      = null;
        File failedFile                       = null;
        String messageId                      = "";
View Full Code Here

    try {
      Variable_set objJobOrOrderParameters = spooler.create_variable_set();
      objJobOrOrderParameters = spooler_task.params();

      if (spooler_task.job().order_queue() != null) {
        Order order = spooler_task.order();
        if (order.params() != null)
          objJobOrOrderParameters.merge(order.params());
      }

      objJobOrOrderParams = objJobOrOrderParameters;
      logger.debug("Number of Params found for Job or Order is : " + objJobOrOrderParameters.count());
      return objJobOrOrderParameters;
View Full Code Here

TOP

Related Classes of sos.spooler.Order

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.