SDK
Más reciente
False
Imagen de fondo del banner
Guía del desarrollador
Última actualización 23 de mar. de 2024

Crear actividades con código (heredado)

Importante: La información de esta página se refiere a las actividades que tienen como destino el .NET Framework obsoleto. Para obtener información sobre la creación de actividades destinadas a .NET para las últimas versiones de Studio, consulta Crear actividades con código.
An activity is the building block of a process automation. UiPath Studio comes with various built-in dedicated activities (such as PDF, mail, Excel, SAP, and more) you can install through the Package Manager, depending on your needs. You can read The UiPath Activities Guide for more details and examples, as well as how to Manage Activities Packages . Additionally, you can create custom activities to better automate processes based on your needs.

There are two major steps required to create a custom activity:

  1. Writing the custom activity code.
  2. Adding the external assembly (.dll) in UiPath.
Nota:

Los siguientes componentes son necesarios para crear una actividad personalizada:

Writing the Custom Activity Code

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. Haga clic en Archivo> Nuevo> Proyecto ... (atajo: Ctrl + Mayús + 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. Seleccione Biblioteca de clases (.NET Framework). Esto nos ayuda a exportar la actividad personalizada como un archivo .dll . Haz clic en Siguiente para ir a la ventana Configura tu nuevo proyecto .


  5. Rellena el campo Nombre del proyecto con el nombre de la actividad deseada. En nuestro caso, podemos usar "MathS SquareOfSum".
  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.


  1. Haz clic en Crear para ir al diseñador de código y empezar a escribir el código de la actividad.
  2. 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 .


  3. 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.




  4. 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:



  5. 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 la entrada de un elemento declarado sea obligatorio. Si no está rellenado, aparece un icono de precaución azul en la barra de título de la actividad.


12. Añade la funcionalidad en la función anulada <Execute( )> . En nuestro caso, tiene este aspecto:
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);
}

Creación de una interfaz de diseñador (opcional)

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.


13. Haga clic con el botón derecho en el proyecto desde el panel Propiedades (en nuestro caso, el proyecto es MathS SquareOfSum). Aparece el menú contextual.



14. En Añadir elemento, selecciona Nuevo elemento…. Se mostrará la ventana Añadir nuevo elemento .

15. Haga clic en Flujo de trabajo en la categoría Instalado en el panel izquierdo. Se muestran todos los elementos relacionados.

16. Seleccione Diseñador de actividades y haga 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:


17.Sustituya 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:



18. Haga clic con el botón derecho en la actividad (en nuestro caso ActMathS SquareOfSum) y, en el menú Añadir , seleccione Clase ... Se mostrará la ventana Añadir nuevo elemento .

19. El elemento de clase ya está seleccionado. Todo lo que se necesita ahora es cambiarle el nombre a DesignerMetadata.cs y hacer clic en Agregar. La nueva clase ahora se agrega a la actividad y se abre en una nueva pestaña.


20. 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());
        }
    }
}

Construyendo la Librería

Asegúrese de probar el proyecto en busca de errores antes de intentar crearlo.

En el menú Crear , selecciona Crear solución. La biblioteca MathSquareOfSum.dll ahora se crea y se guarda en la siguiente ubicación:
%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug

Una vez que se crea la biblioteca, el panel Salida debe mostrar un mensaje como se muestra a continuación:



Creating the NuGet Package

  1. Inicia el Explorador de paquetes NuGet y haz clic en Crear un paquete nuevo (Ctrl + N). Se muestra una ventana dividida que muestra los metadatos y el contenido del paquete. Necesitamos agregar todas las dependencias en esta última sección.
  2. Haz clic con el botón derecho dentro de la sección Contenido del paquete . Se muestra un menú contextual.
  3. Haz clic en Agregar carpeta lib. Ten cuenta que se creará un nuevo elemento lib en la sección de Contenidos del paquete.


  4. Haz clic en lib y selecciona Agregar un archivo existente....



  5. Cargue el ensamblado externo (.dll) creado anteriormente. En nuestro caso, el archivo MathSquareOfSum.dll se encuentra en la carpeta %UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug .
  6. Con el archivo seleccionado, acceda al menú Editar y seleccione Editar metadatos. El panel izquierdo ahora está equipado con campos de metadatos editables.


  7. Fill in the fields as you see fit to better describe your custom activity.
  8. Rellena el campo de identificación . En nuestro caso, puede ser UiPath.MathS Square.Activities, donde el primer valor, UiPath, significa el equipo que creó el paquete. Si no participó ningún equipo en particular, el primer valor se puede dejar en blanco.



  9. Haz clic en el botón de marca de verificación verde en la esquina superior izquierda de la sección Metadatos del paquete para guardar todos los cambios.
  10. En el menú Archivo , seleccione Guardar como .... Aparecerá una ventana del explorador que te permitirá elegir la ubicación del nuevo archivo.
  11. Guarda el archivo en la carpeta donde UiPath almacena los paquetes locales (C:\Program Files (x86)\UiPath\Studio\Packages en versiones anteriores a 2021.4 o C:\Program Files\UiPath\Studio\Packages a partir de la versión 2021.4). El archivo UiPath.MathSquare.Activities.1.0.0.nupkg ahora se crea en la carpeta UiPath.MathSquare.Activities dentro de la carpeta de paquetes.

Cargando el paquete NuGet en Studio

  1. Acceda al Administrador de paquetes desde Studio.
  2. Puesto que guardamos el paquete NuGet en la carpeta de paquetes locales, la actividad debería estar disponible en la fuente local .


  3. Busca la actividad y haz clic en Instalar y luego Guardar. La nueva actividad ya está instalada y se puede utilizar en sus proyectos de automatización.

Was this page helpful?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Logotipo blanco de UiPath
Confianza y seguridad
© 2005-2024 UiPath. All rights reserved.