sdk
latest
false
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo. A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.
UiPath logo, featuring letters U and I in white

Guia do desenvolvedor

Última atualização 30 de out de 2025

Escrevendo o código para uma atividade personalizada

Para entender melhor como escrever o código de uma atividade personalizada, criaremos uma atividade simples que solicita dois números ao usuário e gera o quadrado da soma.
  1. Inicie o Microsoft Visual Studio.
  2. Selecione Arquivo > Novo > Projeto… (atalho: Ctrl + Shift + N). A janela Novo Projeto é exibida.
  3. Selecione C# no menu suspenso Idiomas . A lista de todas as dependências que usam C# é exibida.
  4. Selecione Biblioteca de Classes (.NET Framework). Isso nos ajuda a exportar a atividade personalizada como um arquivo .dll . Selecione Avançar para ir para a janela Configurar seu novo projeto .


  5. Preencha o campo Nome do projeto com o nome da atividade desejada. Em nosso caso, podemos usar "MathSquareOfSum".
  6. Selecione .NET Framework 4.6.1 no menu suspenso Estrutura . Isso garante que a biblioteca é compatível com o UiPath Studio.
    Importante: em projetos Windows - Legado, o UiPath Studio é compatível com atividades criadas com o .NET Framework 4.5.2 a 4.6.1. Para obter informações sobre como migrar atividades para o .NET para uso em projetos com a compatibilidade do Windows, consulte Migrando atividades para o .NET 6.


  7. Selecione Criar para ir até o designer de código e começar a escrever o código da atividade.
  8. No painel Explorador de Soluções , clique com o botão direito na ramificação Referências e selecione Adicionar Referência.... A janela Gerenciador de Referência é exibida.
  9. Procure as referências System.Activities e System.ComponentModel.Composition e adicione-as. Certifique-se de marcar a caixa em frente a cada um deles e clicar em OK. Fazer isso nos permite usar classes das referências mencionadas acima.




  10. Agora, precisamos garantir que nosso código use as referências recém-adicionadas. Isso é feito adicionando as seguintes linhas no designer de código:
    using System.Activities;
    using System.ComponentModel;using System.Activities;
    using System.ComponentModel;
    Nosso projeto agora deve ter a seguinte aparência:


  11. Adicione os parâmetros de entrada e saída. Em nosso caso, o código deve ser semelhante a este:
    //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)
            {
            }
    O atributo <DisplayName(" ")> é o rótulo mostrado antes do campo de entrada no painel Propriedades no Studio. O atributo <Description(" ")> é o texto da dica de ferramenta exibida ao passar o mouse.


    O atributo <ReguiredArgument> é necessário se você quiser que um elemento declarado seja obrigatório para entrada. Se não estiver preenchido, um ícone de cuidado aparece na barra de título da atividade.
  12. Adicione a funcionalidade na função substituída <Execute( )> . No nosso caso, ele se parece com isso:
    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) Criando uma interface de designer

Se não quiser que sua atividade tenha uma interface de designer, pule para a seção “Construa a biblioteca”.

Importante:

Para construir uma interface de designer, você precisa ter o componente do Windows Workflow Foundation instalado no Visual Studio. Se você não tiver selecionado o componente do instalador do Visual Studio, poderá adicioná-lo da seguinte maneira:

  • No Visual Studio, clique no menu Ferramentas e selecione Obter Ferramentas e Funcionalidades.... A janela Instalador do Visual Studio é mostrada.
  • Mude para a guia Componentes individuais e pesquise o componente do Windows Workflow Foundation . Ela fica localizada na seção de atividades de Desenvolvimento .
  • Marque a caixa em frente ao componente do Windows Workflow Foundation e clique em Modificar. O componente necessário será instalado.


  1. Clique com o botão direito no projeto no painel Propriedades (no nosso caso, o projeto é MathSquareOfSum). O menu de contexto é exibido.
  2. Em Adicionar item, selecione Novo item.... A janela Adicionar Novo Item será exibida.
  3. Selecione Fluxo de trabalho na categoria Instalado no painel esquerdo. Todos os elementos relacionados são exibidos.
  4. Selecione Designer de atividades e clique em Adicionar para incluir o item no projeto.


    O item de Designer de atividade é adicionado e o arquivo .xaml correspondente é aberto imediatamente. Deve ser parecido com isto:


  5. Substitua o código existente do Activity Designer pelo seguinte:
    <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>
    O novo layout definido para a atividade agora deve ser semelhante a este:


  6. Clique com o botão direito do mouse na atividade (no nosso caso, ActMathSquareOfSum) e, no menu Adicionar , selecione Class.... A janela Adicionar Novo Item será exibida.
  7. O item da Classe já está selecionado. Tudo o que é necessário agora é renomeá-lo para DesignerMetadata.cs e selecionar Adicionar. A nova classe agora é adicionada à atividade e será aberta em uma nova guia.


  8. Adicione o seguinte conteúdo na classe DesignerMetadata recém-criada:
    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) Criando uma interface de designer

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo
Confiança e segurança
© 2005-2025 UiPath. Todos os direitos reservados.