public override int logic(CertifierOrchestrationElement element)
        {
            Console.WriteLine("BREAK OPERATION");
            return(CertifierConstants.BREAK_SIGNAL);

            //Certifier.BreakIterate = true;
        }
Beispiel #2
0
        public override int logic(CertifierOrchestrationElement element)
        {
            CertifierConsoleLogger.write("CONTINUE OPERATION");
            return(CertifierConstants.CONTINUE_SIGNAL);

            //Certifier.BreakIterate = true;
        }
        public override int logic(CertifierOrchestrationElement element)
        {
            int max = -1, ret = CertifierConstants.NORMAL_SIGNAL;

            if (typeof(RepeatOper).IsInstanceOfType(element.getElement()))
            {
                RepeatOper iterate_oper = (RepeatOper)element.getElement();
                // every children must run MAX
                max = iterate_oper.getMax();
            }



children:
            for (int i = 0; i < max; i++)
            {
                // inside children

                for (int j = element.getChildren().Count - 1; j >= 0; j--)
                {
                    CertifierOrchestrationElement child = element.getChildren()[j];

                    /*if(child.getOperation().Equals(CertifierOrchestrationOperation.BREAKOPER)){
                     *      break children;
                     * }else if(child.getOperation().Equals(CertifierOrchestrationOperation.CONTINUEOPER)){
                     *      continue children;
                     * }*/
                    ret = child.run();
                    if (ret == CertifierConstants.BREAK_SIGNAL)
                    {
                        CertifierConsoleLogger.write("BREAK Operation was found. Breaking inner iterate.");
                        goto _break;
                    }
                    if (ret == CertifierConstants.CONTINUE_SIGNAL)
                    {
                        CertifierConsoleLogger.write("CONTINUE Operation was found. Going back to the beginning of iterate.");

                        goto children;
                    }

                    /*if( ret == CertifierConstants.RETURN_CERTIFIED_SIGNAL || ret == CertifierConstants.RETURN_NOT_CERTIFIED_SIGNAL){
                     *      CertifierConsoleLogger.write("RETURN Operation was found. Stopping certification process and returning.");
                     *
                     *      return ret;
                     *
                     *
                     * }*/
                }
            }


            _break : return(CertifierConstants.NORMAL_SIGNAL);
        }
        public override int logic(CertifierOrchestrationElement element)
        {
            ParallelJob[] threads = new ParallelJob[element.getChildren().Count];

            //creating threads
            for (int i = element.getChildren().Count - 1, j = 0; i >= 0; i--, j++)
            {
                CertifierOrchestrationElement child = element.getChildren()[i];
                ParallelJob pj = new ParallelJob(child);
                threads[j] = pj;
            }

            //starting threads
            CertifierConsoleLogger.write("STARTING PARALLEL TASK");
            foreach (ParallelJob job in threads)
            {
                job.run();
            }


            //join threads
            foreach (ParallelJob job in threads)
            {
                if (!hasBreakOrContinue)
                {
                    job._thread.Join();
                    ret = job.ret;
                    Console.WriteLine(" parallel job. return of job " + ret);
                    if (ret > CertifierConstants.NORMAL_SIGNAL)                     //== CertifierConstants.BREAK_SIGNAL || ret == CertifierConstants.CONTINUE_SIGNAL || ret == CertifierConstants.RETURN_CERTIFIED||ret == CertifierConstants.RETURN_NOT_CERTIFIED ){

                    {
                        hasBreakOrContinue = true;
                        //break;
                    }
                }
                else
                {
                    CertifierConsoleLogger.write("Signal found in parallel tasks: " + ret + ". Interrupting all the remaining threads.");
                    job._thread.Interrupt();
                }
            }
            CertifierConsoleLogger.write("ENDED PARALLEL TASK");

            return(ret);
        }
Beispiel #5
0
        public override int logic(CertifierOrchestrationElement element)
        {
            String handle_id = null;
            String port_id   = null;
            String action_id = null;

            String comp_id     = null;  //action_id or component_id
            String action_oper = null;

            if (typeof(XMLCertifierPrimOper).IsInstanceOfType(element.getElement()))
            {
                XMLCertifierPrimOper start_oper = (XMLCertifierPrimOper)element.getElement();
                handle_id = start_oper.handle_id;
            }


            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement child = element.getChildren()[i];
                if (typeof(XMLCertifierAction).IsInstanceOfType(child.getElement()))
                {
                    XMLCertifierAction certifier_action = (XMLCertifierAction)child.getElement();
                    comp_id   = certifier_action.comp_id;
                    port_id   = certifier_action.port_id;
                    action_id = certifier_action.action_id;
                    //action_oper = certifier_action..value();
                    action_oper = certifier_action.action.ToString();
                }
            }

            if (action_oper.Equals("instantiate"))
            {
                this.instantiateOper(comp_id, handle_id);
            }
            else if (action_oper.Equals("compute"))
            {
                this.computeOper(comp_id, port_id, action_id, handle_id);
            }    /*else if(action_oper.Equals("compute")){
                  *     this.computeOper(subject_id);
                  * }*/
            return(CertifierConstants.NORMAL_SIGNAL);
        }
Beispiel #6
0
        public override int logic(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("STARTING SEQUENCE TASKS");

            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement child = element.getChildren()[i];
                ret = child.run();
                if (ret > CertifierConstants.NORMAL_SIGNAL)       /*=CertifierConstants.BREAK_SIGNAL ||
                                                                   * ret==CertifierConstants.CONTINUE_SIGNAL ||ret==CertifierConstants.RETURN_CERTIFIED ||ret==CertifierConstants.RETURN_NOT_CERTIFIED){
                                                                   */
                {
                    CertifierConsoleLogger.write("Signal found: " + ret + ". Stopping sequence execution.");
                    break;
                }
            }
            CertifierConsoleLogger.write("ENDED SEQUENCE TASKS");
            return(ret);
        }
        public int visit(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("Enter visit for " + element.getOperationStr());
            CertifierConsoleLogger.write("operation " + element.getOperation());
            //this.operation = (CertifierOrchestrationOperation)Enum.Parse(typeof(CertifierOrchestrationOperation), oper);

            //first case, the workflow element. Justo go on...
            if (element.getOperationStr() == "orchestration")
            {
                CertifierConsoleLogger.write("operation entrei " + element.getOperation());
                foreach (CertifierOrchestrationElement child in element.getChildren())
                {
                    /* if(child.run()==CertifierConstants.BREAK_SIGNAL)
                     *       hasBreak=true;*/
                    ret = child.run();
                }
            }
            else
            {
                //calling logic for this type of operation via reflection
                String logicFullClassName = this.logicPkg + ".Logic" + element.getOperationStr();
                Console.WriteLine("logicfullclassname " + logicFullClassName);
                //Type c = Type.GetType(logicFullClassName);

                /*Class c =
                 *              Class.forName(logicFullClassName);*/
                var c = Activator.CreateInstance(null, logicFullClassName);
                AbstractCertifierElementLogic logicClass = (AbstractCertifierElementLogic)c.Unwrap();

                //AbstractCertifierElementLogic logicClass = (AbstractCertifierElementLogic)Activator.CreateInstance(null, logicFullClassName);

                ret = logicClass.logic(element);
                CertifierConsoleLogger.write("Element " + element.getOperationStr() + " returned: " + ret);
            }

            //System.out.println("certif vis impl" + hasBreak);
            return(ret);
        }
        public override int logic(CertifierOrchestrationElement element)
        {
            Console.WriteLine(" element children 0 operation " + element.getElement().GetType());

            XMLCertifierAction action      = (XMLCertifierAction)element.getElement();
            String             port_id     = null; // action_id or component_id
            String             action_id   = null; // action_id or component_id
            String             action_oper = null;
            string             comp_id     = null;

            port_id   = action.port_id;
            action_id = action.action_id;

            //action_oper = action..getAction().value();
            action_oper = action.action.ToString();

            /*Console.WriteLine ("passei aqui logic perform action " + action.valueField + action.action_id +
             *      action.action.ToString() + action.oper_name + action.action_idField1 + action.actionField.ToString() +
             *      action.comp_id + action.comp_idField1
             + " action action " + action.action.ToString());*/


            comp_id = action.comp_id;
            Console.WriteLine(" LogicPerformOper port id " + port_id + "action id " + action_id
                              + " comp id " +
                              comp_id + " action oper " +
                              action_oper);

            if (action_oper.Equals("instantiate"))
            {
                this.instatiateOper(comp_id);
            }
            else if (action_oper.Equals("compute"))
            {
                this.computeOper(comp_id, port_id, action_id);
            }     /*else if (action_oper.Equals("compute")) {
                   *    this.computeOper(subject_id);
                   * }*/
            return(CertifierConstants.NORMAL_SIGNAL);
        }
        public override int logic(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("STARTING SELECT TASK");

            selectoperComplexType select_oper = (selectoperComplexType)element.getElement();
            String chosen = select_oper.chosen;

            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement select      = element.getChildren()[i];
                selectoperComplexTypeChoice   choice_oper = (selectoperComplexTypeChoice)select.getElement();
                String port_id   = choice_oper.port_id;
                String action_id = choice_oper.action_id;
                //navegar no select
                if (string.Equals(action_id, chosen, StringComparison.OrdinalIgnoreCase))
                {
                    foreach (CertifierOrchestrationElement child in select.getChildren())
                    {
                        ret = child.run();
                        if (ret > CertifierConstants.NORMAL_SIGNAL)                       /*=CertifierConstants.BREAK_SIGNAL ||
                                                                                           * ret==CertifierConstants.CONTINUE_SIGNAL ||ret==CertifierConstants.RETURN_CERTIFIED ||ret==CertifierConstants.RETURN_NOT_CERTIFIED){
                                                                                           */
                        {
                            CertifierConsoleLogger.write("Signal found: " + ret + ". Stopping sequence execution.");
                            break;
                        }
                    }
                }
            }


            CertifierConsoleLogger.write("ENDED SELECT TASK");



            return(ret);
        }
Beispiel #10
0
        public override int logic(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("STARTING SWITCH TASK");

            //ChoiceOperComplexType choice_oper = (ChoiceOperComplexType)element.getElement();


            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement select = element.getChildren()[i];
                //System.out.println("Size " + element.getChildren().Count);
                switchoperComplexTypeChoice choice_oper = (switchoperComplexTypeChoice)select.getElement();

                String condition = choice_oper.condition;
                CertifierConsoleLogger.write("Condition: " + condition);
                //navegar no select



                //Integer x = 0;
                //String teste = "x == 0";
                //Certifier.variablesTryAdd(x,x);

                // System.out.println(x.toString());
                condition.Replace("&lt;", "<");
                condition.Replace("&gt;", ">");
                condition.Replace("&quot;", "\"");
                condition.Replace("&amp;", "&");
                condition.Replace("&apos;", "\'");

                /*if (Certifier.formal_properties.get ("mProjExecMPI1", "no deadlock")) {
                 *
                 *      Console.WriteLine ("no deadlock true");
                 * }*/

                //reg.Add.RegisterType ("C4Impl", C4Impl);
                var p = new CompiledExpression(condition)
                {
                    TypeRegistry = Certifier.variables
                };
                //p.Parse();
                p.Compile();
                //Console.WriteLine("Result: {0}", p.Eval());

                CertifierConsoleLogger.write("Condition evaluated: " + p.Eval());



                //System.out.println(cond.booleanValue());
                //System.out.println("Proved vc percent: "  + Certifier.provedVCPercent);
                if ((bool)p.Eval())
                {
                    //if(true)){
                    CertifierOrchestrationElement child = select.getChildren()[0];

                    ret = child.run();
                    //System.out.println("select" + ret);

                    break;
                }
            }
            CertifierConsoleLogger.write("ENDED SWITCH TASK");



            return(ret);
        }
Beispiel #11
0
 public ParallelJob(CertifierOrchestrationElement child)
 {
     this.child = child;
 }
Beispiel #12
0
 public abstract int logic(CertifierOrchestrationElement element);
 public override int logic(CertifierOrchestrationElement element)
 {
     return(CertifierConstants.NORMAL_SIGNAL);
 }