Generación de Código en VPL
Las versiones actuales de VPL poseen un generador de código que permite convertir un diagrama en VPL a código C#,
generando un ensamblado de uno más servicios DSS. Esto permite un desarrollo fácil y que pueda ser combinado con la velocidad de ejecución de C#. Además, este código generado puede ser usado como un punto de comnienzo para un desarrollador. Así podrá IR creciendo el desarrollo de un diagrama en áreas que VPL no contempla o son de mucho peso computacional. Hay dos pasos para la generación de código: Configuración y generación del código. El diagrama necesita ser configurado correctamente para que la generación del código sea exitosa.
En la ventana o lengüeta de proyecto, hay que asegurar que la propiedad “KeyLocation” identifica correctamente la localización de un “Strong Name Key” (fichero .snk) que normalmente se encuentra en “samples\mrisamples.snk". En esta misma ventana, la propiedad “SourceLocation” debe ser establecida apropiadamente, configurando la localización en la que se generará el código.2 Desde el menú “Build” seleccionar la opción “Compile as a Service” (o el atajo Ctrl+Shift+B). Esto creará una compilación del proyecto en forma de servicio para su uso posterior. Si se mostrase algún error de compilación, se recomienda revisar el apartado problemas conocidos de esta sección. Además, el nuevo ensamblado del servicio será añadido al directorio “bin”. En la localización que se especificó en la propiedad “SourceLocation” se pueden encontrar varios ficheros .css y .csproj que se pueden revisar/editar para modificar el código generado y recompilarlo si fuese necesario. Una nueva generación de código provocará la sobreescritura cualquier posible cambio realizado al código generado anteriormente, provocando un aviso (“Warning”). Existen varias vías para ejecutar un servicio generado en VPL:
1. Arranque un DSS node y use el panel de control para arrancar el servicio generado: a) Run dsshost /p:50000 /t:50001 b) En un explorador abra la url: http://localhost:50000/controlpanel c) Busque su nuevo servicio generado en la lista de sercicios d) Click sobre el botón “Create” apropiado del la página del panel de control
2. Cree un manifiesto (fichero manifest) que haga referencia al nuevo servicio creado por el contrato (el identificador del contrato de un servicio se puede encontrar en el fichero que se generó “DiagramTypes.cs” y se puede modificar cambiando el valor de la propiedad “ContractPrefix” en la ventana de propiedades antes de generar el código). Arranque un nodo DSS usando el manifiesto con el parámetro de arranque /m en consola.
3. Cierre y abra de nuevo VPL (ver problemas conocidos de esta sección) y cree un nuevo diagrama que use el nuevo servicio generado (apareciendo ahora en la lista de servicios de VPL. Al ejecutar el diagrama desde VPL de forma normal provocará que el servicio se ejecute apropiadamente.
Problemas conocidos I. Tipo “Enums” no está soportado actualmente. II. La lista de funciones no está soportado actualmente. III. Bajo ciertas circunstancias un bloque “If” que va seguido de un bloque “Merge” puede causar una generación de código incorrecta. Es fácil averiguar si esta es la causa de un problema examinando el código. IV. La generación de un nuevo servicio no aparece automáticamente en la lista de servicios de VPL. Cierre VPL y vuélvalo a abrir. V. Los servicios no se generaron para .NET Compact Framework (CF): Es posible generar y convertir un servicio para que funcione con .NET CF siguiendo el mismo procedimiento que es usado para convertir cualquier servicio que trabaje con .NET CF. De esta forma los métodos generados no usarán métodos que no esté soportados en .NET CF. VI. La información de configuración no es incluida en el servicio generado. Si un diagrama que orquesta servicios y los configura bien estableciendo el estado inicial de los servicios partners o bien importando un manifiesto (manifest), el servicio generado no arrancará correctamente. Para solucionarlo existen dos caminos:
1. Tras la generación del ensamblado del diagrama, cierre y abra de nuevo VPL. Cree un nuevo diagrama y arrastre el servicio que compiló desde la lista de servicios al nuevo diagrama. Este nuevo diagrama no contiene código, únicamente existe para configurar el servicio compilado.
2. Cree un manifiesto de forma manual para el nuevo servicio generado que lo configure correctamente. Para ello necesitará modificar los atributos de los servicios de partners que pudiese utilizar en el código del servicio generado y así poder cambiar su “PartnerCreationPolicy” de “UseExistingOrCreate” a “UsePartnerListEntry”.
Add as favourites (154) | Quote this article on your site | Views: 2514
Only registered users can write comments. Please login or register.
Related Items:
- Jobs: Two Chair positions for new Centre for Computational Neuroscience and Co
- Birmingham Fellows in Robotics and Cognitive Systems
- Finding papers about consciousness and robotics
- Paladyn. Journal of Behavioral Robotics
- International Journal of Social Robotics
- Cognitive Robotics and Machine Consciousness
- Cognitive Robotics
- Polymorphic Robotics
- Urbi goes Open Source
- The Tower of Hanoi for Robotics
|