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

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

    Janela "Criar um novo projeto" no Microsoft Visual Studio

  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 seja compatível com o UiPath Studio.

    Importante:

    Em projetos Windows - Legacy, 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 .NET para uso em projetos com compatibilidade com o Windows, consulte Migração de atividades para .NET 6.

    Configuração do seu novo projeto

  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 do mouse na ramificação Referências e selecione Adicionar Referência.... A janela Gerenciador de referência é exibida.

  9. Pesquise as referências System.Activities e System.ComponentModel.Composition e adicione-as. Certifique-se de marcar a caixa na frente de cada uma delas e clicar em OK. Fazer isso nos permite usar classes das referências mencionadas acima.

    Janela do Gerenciador de Referência com o assembly System.Activities selecionado

    Janela do Gerenciador de Referência com o assembly System.ComponentModel.Composition selecionado

  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:

    Como o projeto fica após a adição do bloco de código anterior

  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.

    Painel de propriedades da sua atividade personalizada

    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 criar 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, você pode adicioná-lo da seguinte maneira:

  • No Visual Studio, clique no menu Ferramentas e selecione Obter ferramentas e recursos.... A janela Instalador do Visual Studio é exibida.
  • Mude para a guia Componentes individuais e pesquise o componente do Windows Workflow Foundation . Ele está localizado na seção Atividades de desenvolvimento .
  • Marque a caixa em frente ao componente do Windows Workflow Foundation e clique em Modificar. O componente necessário é instalado.

Opção pelo componente Windows Workflow Foundation no Visual Studio

  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.

    Selecionar Designer de atividades na janela Adicionar novo item.

    O item do Designer de atividades é adicionado e o arquivo .xaml correspondente é aberto imediatamente. Ele deve ser parecido com este:

    O arquivo .xaml para o item do Designer de atividades.

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

    O layout da atividade.

  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.

    Renomeando o item de classe para DesignerMetadata.cs.

  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?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades