UiPath Documentation
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 mar. de 2026

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 .

    Ventana "Crear un nuevo proyecto" en Microsoft Visual Studio

  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 con la compatibilidad de Windows, consulta Migrar actividades a .NET 6.

    Configurar tu nuevo proyecto

  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 Añadir referencia.... Se mostrará la ventana Gestor de referencias .

  9. Busca las referencias System.Activities y System.ComponentModel.Composition y añádelas. Asegúrate de marcar la casilla situada delante de cada uno de ellos y haz clic en Aceptar. Esto nos permite utilizar clases de las referencias antes mencionadas.

    Ventana del Gestor de referencias con el ensamblado System.Activities seleccionado

    Ventana del Gestor de referencias con el ensamblado System.ComponentModel.Composition seleccionado

  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:

    Aspecto del proyecto después de añadir el bloque de código anterior

  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 por encima.

    Panel de propiedades de tu actividad personalizada

    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, debes tener instalado el componente Windows Workflow Foundation en Visual Studio. Si no has seleccionado el componente desde el instalador de Visual Studio, puedes añadirlo de la siguiente manera:

  • En Visual Studio, haz clic en el menú Herramientas y selecciona Obtener herramientas y características.... Aparecerá 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 delante del componente Windows Workflow Foundation y haz clic en Modificar. El componente requerido se instala.

Optar por el componente Windows Workflow Foundation en Visual Studio

  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.

    Seleccionando Diseñador de actividades en la ventana Añadir nuevo elemento.

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

    El archivo .xaml para el elemento del Diseñador de actividades.

  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="https://docs.uipath.com/es/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="https://docs.uipath.com/es/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:

    El diseño de la actividad.

  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.

    Cambiar el nombre del elemento de clase a DesignerMetadata.cs.

  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?

Conectar

¿Necesita ayuda? Soporte

¿Quiere aprender? UiPath Academy

¿Tiene alguna pregunta? Foro de UiPath

Manténgase actualizado