Bläddra i källkod

Se concreta las Actions para los Workflows.

Maximiliano Schvindt 8 år sedan
förälder
incheckning
431e8cee8c

+ 8 - 4
src/FTTHBundle/Admin/ONUAdmin.php

@@ -35,7 +35,7 @@ class ONUAdmin extends BaseAdmin
     protected function configureListFields(ListMapper $listMapper)
     {
         $listMapper
-            ->add('id')
+            // ->add('id')
             ->add('ip')
             ->add('mac')
             ->add('serialNumber')
@@ -43,10 +43,11 @@ class ONUAdmin extends BaseAdmin
             ->add('clientId')
             ->add('olt')
             ->add('model')
-            ->add('node')
-            ->add('profile')
+            ->add('workflow')
+            // ->add('node')
+            // ->add('profile')
             ->add('currentState','string', array('template' => 'FTTHBundle:ONU:base_list_field_onu_state.html.twig'))
-            ->add('transitionState')
+            // ->add('transitionState')
             ->add('_action', null, array(
                 'actions' => array(
                     'show' => array(),
@@ -90,8 +91,11 @@ class ONUAdmin extends BaseAdmin
             ->add('clientId')
             ->add('olt')
             ->add('model')
+            ->add('model.workflow')
             ->add('node')
             ->add('profile')
+            ->add('currentState')
+            ->add('log','string', array('template' => 'FTTHBundle:ONU:show_log.html.twig'))
         ;
     }
 

+ 7 - 0
src/FTTHBundle/Entity/ONU.php

@@ -437,4 +437,11 @@ class ONU
         return "state_machine";
     }
 
+    public function getLog() 
+    {
+        $out = array();
+        exec("tail -400 /var/flowdat/ftth/var/logs/dev.log | grep 'ONU_id_{$this->id}'", $out);
+        return implode("\n",$out);
+    }
+
 }

+ 9 - 1
src/FTTHBundle/Resources/translations/FTTHBundle.es.yml

@@ -32,6 +32,8 @@ filter:
     label_upload: Upload
     label_download: Download
     label_workflow: Workflow
+    label_log: Log
+    label_model_workflow: Workflow
 breadcrumb:
     link_o_n_u_list: Listado ONU
     link_o_n_u_create: Crear ONU
@@ -78,6 +80,8 @@ form:
     label_upload: Upload
     label_download: Download
     label_workflow: Workflow
+    label_log: Log
+    label_model_workflow: Workflow
 list:
     label_id: Id
     label_ip: Ip
@@ -105,6 +109,8 @@ list:
     label_upload: Upload
     label_download: Download
     label_workflow: Workflow
+    label_log: Log
+    label_model_workflow: Workflow
 show:
     label_id: Id
     label_ip: Ip
@@ -131,4 +137,6 @@ show:
     label_profile: Perfil
     label_upload: Upload
     label_download: Download
-    label_workflow: Workflow
+    label_workflow: Workflow
+    label_log: Log
+    label_model_workflow: Workflow

+ 5 - 0
src/FTTHBundle/Resources/views/ONU/show_log.html.twig

@@ -0,0 +1,5 @@
+{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
+
+{% block field %}
+    <pre style="font-size: 10px;">{{object.getLog()}}</pre>
+{% endblock %}

+ 3 - 3
src/FTTHBundle/Resources/views/ONU/show_workflow.html.twig

@@ -4,7 +4,7 @@
     <h1>ONU "{{ onu.ponSerialNumber}}"</h1>
     <div class="row">
         <div class="col-md-5">
-            <h2>Current State</h2>
+            <h2>Workflow: {{onu.getWorkflow()}}</h2>
             <p>
                 <code>
                     FTTHBundle\Entity\ONU::current_state = {{ onu.getCurrentState() }}
@@ -63,9 +63,9 @@
     </div>
     <div>
         <br />
-        <img src="http://200.50.175.17/ftth/onu_state.png" />
+        <img src="http://200.50.175.17/ftth/workflows_png/{{onu.getWorkflow()}}.png" />
         <br />
-        <img src="http://200.50.175.17/ftth/transition_state.png" />
+        <img src="http://200.50.175.17/ftth/workflows_png/transition_state.png" />
     </div>
     <br />
     <div>

+ 1 - 1
src/WorkflowBundle/Admin/ActionAdmin.php

@@ -102,7 +102,7 @@ class ActionAdmin extends BaseAdmin
             ->add('objectClass')
             ->add('event')
             ->add('eventReference')
-            ->add('template')
+            ->add('template','string', array('template' => 'WorkflowBundle:Action:show_template.html.twig'))
         ;
     }
 

+ 8 - 0
src/WorkflowBundle/Entity/Workflow.php

@@ -459,6 +459,14 @@ class Workflow
         $console = $rootDir."/../bin/console";
         exec("php {$console} cache:clear --env=prod");
 
+        $web_workflows = $rootDir."/../web/workflows_png/";
+        foreach($workflows as $k => $workflow) {
+            $file_locate = "{$web_workflows}/{$workflow->getName()}";
+            exec("php {$console} workflow:dump {$workflow->getName()} > {$file_locate}.dot");
+            if(file_exists("{$file_locate}.dot")) {
+                exec("dot -Tpng {$file_locate}.dot -o {$file_locate}.png");
+            }
+        }
     }
 
 }

+ 12 - 3
src/WorkflowBundle/Event/EventSubscriber.php

@@ -87,6 +87,8 @@ class EventSubscriber implements EventSubscriberInterface
     }
 
     public function getActions($event, $eventType, $eventReference) {
+        $logger = $this->container->get('logger');
+
         $em = $this->container->get("doctrine.orm.entity_manager");
         $object = $event->getSubject();
         $class = (string) get_class($object);
@@ -98,7 +100,8 @@ class EventSubscriber implements EventSubscriberInterface
         $filter['workflowName'] = $object->getWorkflow();
         $filter['eventReference'] = $eventReference;
 
-        
+        $logger->info("WORKFLOW-ACTION {$object->getWorkflowType()}.{$object->getWorkflow()} => EVENT {$eventType}:{$eventReference} => CLASS {$class}_id_{$object->getId()}");
+
         $actions = $em->getRepository("WorkflowBundle:Action")->findBy($filter);
 
         return $actions;
@@ -106,15 +109,21 @@ class EventSubscriber implements EventSubscriberInterface
     }
 
     public function completeAction($action, $params) {
-
+        
+        $logger = $this->container->get('logger');
         $template = $action->getTemplate();
 
         $twig = new \Twig_Environment(new \Twig_Loader_String());
         $rendered = $twig->render($template, $params);
 
+        $object = $params['object'];
+        $class = get_class($object);
+        
+        $logger->info("WORKFLOW-ACTION {$class}_id_{$object->getId()} | action_id_{$action->getId()} => Render: {$rendered}");
+        
         $string = file_get_contents("/var/flowdat/ftth/out.log");
             
-        $string .= "Action id :".$action->getId().PHP_EOL;
+        $string .= "### Action id :".$action->getId().PHP_EOL;
         $string .= "----------------------".PHP_EOL.$template.PHP_EOL;
         $string .= "----------------------".PHP_EOL.$rendered.PHP_EOL.PHP_EOL;
         

+ 7 - 7
src/WorkflowBundle/Resources/views/Action/action_edit.html.twig

@@ -3,19 +3,19 @@
 {% block form %}
     {{ parent() }}
      
-     {#https://github.com/ryanburnette/textarea-as-ace-editor#}
-     {#https://ace.c9.io/#}
-     {#https://ace.c9.io/build/kitchen-sink.html#}
-     <script src="{{ asset('bundles/baseadmin') }}/ace_editor/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
-     <script src="{{ asset('bundles/baseadmin') }}/ace_editor/textarea-as-ace-editor.js" type="text/javascript" charset="utf-8"></script>
+    {#https://github.com/ryanburnette/textarea-as-ace-editor#}
+    {#https://ace.c9.io/#}
+    {#https://ace.c9.io/build/kitchen-sink.html#}
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/textarea-as-ace-editor.js" type="text/javascript" charset="utf-8"></script>
      
-     <style type="text/css" media="screen">
+    <style type="text/css" media="screen">
         .ace_editor {
             height: 250px!important;
         }
     </style>
 
-     <script type="text/javascript">
+    <script type="text/javascript">
         $( document ).ready(function() {
             $("textarea").asAceEditor();
             editor = $('textarea').data('ace-editor');

+ 30 - 0
src/WorkflowBundle/Resources/views/Action/show_template.html.twig

@@ -0,0 +1,30 @@
+{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
+
+{% block field %}
+    <textarea id="textarea_ace_editor">{{object.getTemplate()}}</textarea>
+
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/textarea-as-ace-editor.js" type="text/javascript" charset="utf-8"></script>
+     
+    <style type="text/css" media="screen">
+        .ace_editor {
+            height: 250px!important;
+        }
+    </style>
+
+    <script type="text/javascript">
+        $( document ).ready(function() {
+            $("#textarea_ace_editor").asAceEditor();
+            editor = $('#textarea_ace_editor').data('ace-editor');
+            
+            editor.setTheme("ace/theme/github");
+            editor.getSession().setMode("ace/mode/twig");
+            editor.setReadOnly(true);
+            editor.setFontSize(14);
+            editor.setShowInvisibles(true);
+            editor.getSession().setTabSize(2);
+            editor.getSession().setUseSoftTabs(true);
+            editor.getSession().setUseWrapMode(true);
+        });
+    </script>
+{% endblock %}

+ 27 - 1
src/WorkflowBundle/Resources/views/Workflow/show_template.html.twig

@@ -1,5 +1,31 @@
 {% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
 
 {% block field %}
-    <pre>{{object.getTemplate()}}</pre>
+    <textarea id="textarea_ace_editor">{{object.getTemplate()}}</textarea>
+
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
+    <script src="{{ asset('bundles/baseadmin') }}/ace_editor/textarea-as-ace-editor.js" type="text/javascript" charset="utf-8"></script>
+     
+    <style type="text/css" media="screen">
+        .ace_editor {
+            height: 250px!important;
+        }
+    </style>
+
+    <script type="text/javascript">
+        $( document ).ready(function() {
+            $("#textarea_ace_editor").asAceEditor();
+            editor = $('#textarea_ace_editor').data('ace-editor');
+            
+            editor.setTheme("ace/theme/github");
+            editor.getSession().setMode("ace/mode/twig");
+            editor.setReadOnly(true);
+            editor.setFontSize(14);
+            editor.setShowInvisibles(true);
+            editor.getSession().setTabSize(2);
+            editor.getSession().setUseSoftTabs(true);
+            editor.getSession().setUseWrapMode(true);
+        });
+    </script>
+    <img src="http://200.50.175.17/ftth/workflows_png/{{object.getName()}}.png" />
 {% endblock %}