Paso 4

Parent Previous Next

Para comenzar a desarrollar nuestra actividad, crearemos un nuevo proyecto en Visual Studio 2005 o superior.



Este proyecto deberá ser de tipo Class Library. Aquí definiremos el nombre del proyecto,  la ubicación en donde se creará dicho proyecto y el nombre de la solución.


En nuestro ejemplo, ambos, el nombre del proyecto y nombre de la solución, los definimos como CustomActivities.


Procederemos a renombrar el archivo generado por defecto "Class1.cs", lo llamaremos "MyActivity.cs".



A continuación pasaremos a desarrollar la funcionalidad de nuestra actividad en tiempo de ejecución para lo cual deberemos:


namespace Tycon.Labs.CustomActivities

{

   /// Definimos que al hacer doble clic sobre nuestra actividad en el Designer se abrirá la pantalla de configuración

   /// definida en la clase MyActivityDesigner que definiremos en el Paso 5.

   [System.ComponentModel.Designer("Tycon.Labs.CustomActivities.MyActivityDesigner, CustomActivities")]


   /// Definimos la imagen a mostrar para la actividad en la caja de herramientas del Designer.

   [System.Drawing.ToolboxBitmap(typeof(MyActivity), "MyActivityIcon.png")]

   public class MyActivity : Tycon.BIZUIT.Activities.TyconActivity

   {

       public override void Run(System.Workflow.ComponentModel.ActivityExecutionContext context)

       {

               //Este metodo sera ejecutado de manera automatica por el motor de worklfow de BIZUIT

           // Obtiene en un XML el valor de la estructura de entrada (cuyo XSD esta definido en la propiedad InputSchema)

           // Este XML contendrá los valores que se hayan mapeado en el Paso 4 del Asistente de Configuracion

           // Ese XML es almacenado en la propiedad InputXml

           Tycon.BIZUIT.WorkflowHelper helper = new Tycon.BIZUIT.WorkflowHelper();

           InputXml = helper.ExecuteTransformation(this, context);


           // Cargo los parametros de entrada.

           // En nuestro ejemplo, los parametros recibidos tienen la forma:

           //<MyActivity>

           //<MyValue1>VALORENVIADO1</MyValue1>

           //<MyValue2>VALORENVIADO2</MyValue2>

           //</MyActivity>

           //Debido a que definimos que la propiedad InputSchema tendria esa forma.

           System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

           doc.LoadXml(InputXml);


           // Obtengo los valores que me interesan de los parametros recibidos, y hago lo que tiene que hacer la actividad.

           // En nuestro caso, concatenar los dos valores recibidos y devolverlos en una estructura <Reponse>VALORCONCATENADO</Response>

           // Porque asi lo definimos en la propiedad OutputSchema


           System.Xml.XmlElement docElem = doc.DocumentElement;

           string valor1 = doc.SelectSingleNode("//MyValue1").InnerText;

           string valor2 = doc.SelectSingleNode("//MyValue2").InnerText;


           string result = "<Response>" + valor1 + valor2 + "</Response>";


           // Guardo el resultado de la operacion en la propiedad OutputXml

           OutputXml = result;

           

           // Una vez realizada la ejecución, ejecuto los eventuales mapeos definidos en el Paso 5 del Asistente de Configuracion

           helper.ExecuteOutputParameter(this, context);

       }

   }

}


El paso siguiente, será registrar las propiedades de dicha actividad, las cuales almacenarán los valores ingresados en la interfaz de configuración permitiendo su serialización y deserialización.


En nuestro ejemplo requeriremos de dos propiedades: MyValue1 y MyValue2, las cuales se definen de la siguiente manera:


public static System.Workflow.ComponentModel.DependencyProperty MyValue1Property = System.Workflow.ComponentModel.DependencyProperty.Register("MyValue1", typeof(System.String), typeof(MyActivity));


[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Visible)]

[System.ComponentModel.Browsable(true)]


public string MyValue1

{

get { return ((string)(GetValue(MyValue1Property))); }

      set { SetValue(MyValue1Property, value); }

}


public static System.Workflow.ComponentModel.DependencyProperty MyValue2Property = System.Workflow.ComponentModel.DependencyProperty.Register("MyValue2", typeof(System.String), typeof(MyActivity));


[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Visible)]

[System.ComponentModel.Browsable(true)]


public string MyValue2

{

get { return ((string)(GetValue(MyValue2Property))); }

      set { SetValue(MyValue2Property, value); }

}







Anterior / Siguiente