sdk
latest
false
Importante :
Este contenido se ha localizado parcialmente a partir de un sistema de traducción automática. La localización de contenidos recién publicados puede tardar entre una y dos semanas en estar disponible.
UiPath logo, featuring letters U and I in white

Guía del desarrollador

Última actualización 30 de oct. de 2025

Escribir el código para una actividad personalizada

Para comprender mejor cómo escribir el código para una actividad personalizada, vamos a crear una actividad simple que le pide al usuario dos números y luego genera el cuadrado de su suma.
  1. Inicia Microsoft Visual Studio.
  2. Selecciona Archivo > Nuevo > Proyecto... (atajo: Ctrl + Shift + N). Se mostrará la ventana Nuevo proyecto .
  3. Selecciona C # en el menú desplegable Idiomas . Se muestra la lista de todas las dependencias que utilizan C #.
  4. Selecciona Biblioteca de clases (.NET Framework). Esto nos ayuda a exportar la actividad personalizada como un archivo .dll . Selecciona Siguiente para ir a la ventana Configurar tu nuevo proyecto .


  5. Rellena el campo Nombre del proyecto con el nombre de la actividad deseada. En nuestro caso, podemos utilizar "MathSquareOfSum".
  6. Selecciona .NET Framework 4.6.1 en el menú desplegable de Framework . Esto garantiza que la biblioteca sea compatible con UiPath Studio.
    Importante: en proyectos Windows: heredado, UiPath Studio admite actividades creadas con .NET Framework 4.5.2 a 4.6.1. Para obtener información sobre cómo migrar actividades a .NET para su uso en proyectos compatibles con Windows, consulta Migrar actividades a .NET 6.


  7. Selecciona Crear para ir al diseñador de código y empezar a escribir el código de actividad.
  8. En el panel Explorador de soluciones , haz clic con el botón derecho en la rama Referencias y selecciona Agregar referencia .... Se mostrará la ventana Gestor de referencias .
  9. Busque las referencias System.Activities y System.ComponentModel.Composition y añádalas. Asegúrese de marcar la casilla frente a cada uno y hacer clic en Aceptar. Hacerlo nos permite usar clases de las referencias mencionadas.




  10. Ahora, debemos asegurarnos de que nuestro código utiliza las referencias recién agregadas. Esto se hace añadiendo las siguientes líneas en el diseñador de código:
    using System.Activities;
    using System.ComponentModel;using System.Activities;
    using System.ComponentModel;
    Nuestro proyecto debería tener ahora este aspecto:


  11. Añade los parámetros de entrada y salida. En nuestro caso, el código debería tener este aspecto:
    //Note that these attributes are localized so you need to localize this attribute for Studio languages other than English
     
    //Dots allow for hierarchy. App Integration.Excel is where Excel activities are.
    [Category("Category.Where.Your.Activity.Appears.In.Toolbox")]
    [DisplayName("Human readable name instead of class name")]
    [Description("The text of the tooltip")]
     public class MathSqSum : CodeActivity
    {
     
        //Note that these attributes are localized so you need to localize this attribute for Studio languages other than English
                 [Category("Input")]
            [DisplayName("First Number")]
            [Description("Enter the first number")]
            [RequiredArgument]
            public InArgument<int> FirstNumber { get; set; }
            [Category("Input")]
            [DisplayName("Second Number")]
            [Description("Enter the second number")]
            [RequiredArgument]
            public InArgument<int> SecondNumber { get; set; }
            [Category("Output")]
            public OutArgument<int> ResultNumber { get; set; }
            protected override void Execute(CodeActivityContext context)
            {
            }//Note that these attributes are localized so you need to localize this attribute for Studio languages other than English
     
    //Dots allow for hierarchy. App Integration.Excel is where Excel activities are.
    [Category("Category.Where.Your.Activity.Appears.In.Toolbox")]
    [DisplayName("Human readable name instead of class name")]
    [Description("The text of the tooltip")]
     public class MathSqSum : CodeActivity
    {
     
        //Note that these attributes are localized so you need to localize this attribute for Studio languages other than English
                 [Category("Input")]
            [DisplayName("First Number")]
            [Description("Enter the first number")]
            [RequiredArgument]
            public InArgument<int> FirstNumber { get; set; }
            [Category("Input")]
            [DisplayName("Second Number")]
            [Description("Enter the second number")]
            [RequiredArgument]
            public InArgument<int> SecondNumber { get; set; }
            [Category("Output")]
            public OutArgument<int> ResultNumber { get; set; }
            protected override void Execute(CodeActivityContext context)
            {
            }
    El atributo <DisplayName(" ")> es la etiqueta que se muestra antes del campo de entrada en el panel Propiedades en Studio. El atributo <Description(" ")> es el texto de la información sobre herramientas que se muestra al pasar el ratón.


    El atributo <ReguiredArgument> es necesario si quieres que un elemento declarado sea obligatorio para la entrada. Si no se rellena, aparece un icono de precaución en la barra de título de la actividad.
  12. Añade la funcionalidad en la función anulada <Execute( )> . En nuestro caso, se ve así:
    protected override void Execute(CodeActivityContext context)
    {
        var firstNumber = FirstNumber.Get(context);
      var secondNumber = SecondNumber.Get(context);
      
      var result = (int)Math.Pow(firstNumber + secondNumber, 2);
      ResultNumber.Set(context, result);
    }protected override void Execute(CodeActivityContext context)
    {
        var firstNumber = FirstNumber.Get(context);
      var secondNumber = SecondNumber.Get(context);
      
      var result = (int)Math.Pow(firstNumber + secondNumber, 2);
      ResultNumber.Set(context, result);
    }

(Opcional) Crear una interfaz de diseñador

Si no desea que su actividad tenga una interfaz de diseñador, puede pasar a la sección Crear la biblioteca.

Importante:

Para crear una interfaz de diseñador, necesitas tener instalado el componente Windows Workflow Foundation en Visual Studio. Si no ha seleccionado el componente desde el instalador de Visual Studio, puede agregarlo de la siguiente manera:

  • En Visual Studio, haz clic en el menú Herramientas y selecciona Obtener herramientas y características. Se mostrará la ventana del instalador de Visual Studio.
  • Cambia a la pestaña Componentes individuales y busca el componente Windows Workflow Foundation . Se encuentra en la sección Actividades de desarrollo .
  • Marca la casilla situada frente al componente Windows Workflow Foundation y haz clic en Modificar. Se instala el componente necesario.


  1. Haz clic con el botón derecho en el proyecto desde el panel Propiedades (en nuestro caso, el proyecto es MatemáticasCuadradoDeSuma). Aparecerá el menú contextual.
  2. Desde Añadir elemento, selecciona Nuevo elemento.... Se mostrará la ventana Añadir nuevo elemento .
  3. Selecciona Flujo de trabajo en la categoría Instalado en el panel izquierdo. Se muestran todos los elementos relacionados.
  4. Selecciona Diseñador de actividades y haz clic en Añadir para incluir el elemento en el proyecto.


    Se agrega el elemento Diseñador de actividades y el archivo .xaml correspondiente se abre de inmediato. Debería tener este aspecto:


  5. Reemplaza el código del Diseñador de actividades existente por lo siguiente:
    <sap:ActivityDesigner x:Class="MathSquareOfSum.MathSqSumDesigner"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
        xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
        xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
        <a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
            <ResourceDictionary>
                <sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
            </ResourceDictionary>
        </sap:ActivityDesigner.Resources>
        <DockPanel Width="300">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="90"></ColumnDefinition>
                    <ColumnDefinition Width="210"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <TextBlock Grid.Row="0" Grid.Column="0" Text="First Number"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="0" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter first number" Expression="{Binding Path=ModelItem.FirstNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
                <TextBlock Grid.Row="1" Grid.Column="0" Text="Second Number"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="1" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter second number" Expression="{Binding Path=ModelItem.SecondNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
                <TextBlock Grid.Row="2" Grid.Column="0" Text="Result"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="2" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="The sum of the numbers" UseLocationExpression="True" Expression="{Binding Path=ModelItem.ResultNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=Out, Mode=TwoWay}" />
            </Grid>
        </DockPanel>
    </sap:ActivityDesigner><sap:ActivityDesigner x:Class="MathSquareOfSum.MathSqSumDesigner"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
        xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
        xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
        <a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
            <ResourceDictionary>
                <sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
            </ResourceDictionary>
        </sap:ActivityDesigner.Resources>
        <DockPanel Width="300">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="90"></ColumnDefinition>
                    <ColumnDefinition Width="210"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <TextBlock Grid.Row="0" Grid.Column="0" Text="First Number"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="0" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter first number" Expression="{Binding Path=ModelItem.FirstNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
                <TextBlock Grid.Row="1" Grid.Column="0" Text="Second Number"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="1" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter second number" Expression="{Binding Path=ModelItem.SecondNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
                <TextBlock Grid.Row="2" Grid.Column="0" Text="Result"></TextBlock>
                <sapv:ExpressionTextBox Grid.Row="2" Grid.Column="1"  OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="The sum of the numbers" UseLocationExpression="True" Expression="{Binding Path=ModelItem.ResultNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=Out, Mode=TwoWay}" />
            </Grid>
        </DockPanel>
    </sap:ActivityDesigner>
    El nuevo diseño definido para la actividad debería tener este aspecto:


  6. Haz clic con el botón derecho en la actividad (en nuestro caso ActMathSquareOfSum) y, en el menú Añadir , selecciona Clase.... Se mostrará la ventana Añadir nuevo elemento .
  7. El elemento Clase ya está seleccionado. Todo lo que se necesita ahora es cambiarle el nombre a DesignerMetadata.cs y seleccionar Añadir. La nueva clase se añade ahora a la actividad y se abre en una nueva pestaña.


  8. Añade el siguiente contenido en la clase DesignerMetadata recién creada:
    using MathSquareOfSum;
    using System.Activities.Presentation.Metadata;
    using System.ComponentModel;
    namespace ActMathSquareOfSum
    {
        public class DesignerMetadata : IRegisterMetadata
        {
            public void Register()
            {
                AttributeTableBuilder attributeTableBuilder = new AttributeTableBuilder();
                attributeTableBuilder.AddCustomAttributes(typeof(MathSqSum), new DesignerAttribute(typeof(MathSqSumDesigner)));
                MetadataStore.AddAttributeTable(attributeTableBuilder.CreateTable());
            }
        }
    }using MathSquareOfSum;
    using System.Activities.Presentation.Metadata;
    using System.ComponentModel;
    namespace ActMathSquareOfSum
    {
        public class DesignerMetadata : IRegisterMetadata
        {
            public void Register()
            {
                AttributeTableBuilder attributeTableBuilder = new AttributeTableBuilder();
                attributeTableBuilder.AddCustomAttributes(typeof(MathSqSum), new DesignerAttribute(typeof(MathSqSumDesigner)));
                MetadataStore.AddAttributeTable(attributeTableBuilder.CreateTable());
            }
        }
    }
  • (Opcional) Crear una interfaz de diseñador

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo
Confianza y seguridad
© 2005-2025 UiPath. Todos los derechos reservados.