- Visão geral
- Atividades personalizadas
- Compreensão da estrutura do projeto de atividades
- Escrever o código da atividade
- Configuração dos metadados da atividade
- Compilando a solução e criando o pacote NuGet
- Uso da atividade em um projeto do Studio
- Como testar sua atividade
- Escrevendo o código para uma atividade personalizada
- Adicionando o .dll de assembly externo no UiPath Studio
- Migração de atividades para o. NET 6
- Notas de versão
- Como Criar Regras do Analisador de Fluxo de Trabalho
- Como criar as configurações de projeto de atividades
- Como criar assistentes personalizados
- Priorizar atividades por escopo
- UiPath.Activities.Api.Base
- UiPath.Studio.Activities.Api
- UiPath.Studio.Activities.Api.Activities
- UiPath.Studio.Activities.Api.BusyService
- UiPath.Studio.Activities.Api.ExpressionEditor
- UiPath.Studio.Activities.Api.Expressions
- UiPath.Studio.Activities.Api.Licensing
- UiPath.Studio.Activities.Api.Mocking
- UiPath.Studio.Activities.Api.ObjectLibrary
- UiPath.Studio.Activities.Api.PackageBindings
- UiPath.Studio.Activities.Api.ProjectProperties
- UiPath.Studio.Activities.Api.ScopedActivities
- UiPath.Studio.Activities.Api.Settings
- UiPath.Studio.Activities.Api.Wizards
- UiPath.Studio.Activities.Api.Workflow
- UiPath.Studio.Api.Controls
- UiPath.Studio.Api.Telemetry
- UiPath.Studio.Api.Theme
- Robot JavaScript SDK
- Gatilhos SDK
- SDKs de agentes

Guia do desenvolvedor
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.
-
Inicie o Microsoft Visual Studio.
-
Selecione Arquivo > Novo > Projeto… (atalho:
Ctrl + Shift + N). A janela Novo Projeto é exibida. -
Selecione C# no menu suspenso Idiomas . A lista de todas as dependências usando C# é exibida.
-
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 .
-
Preencha o campo Nome do projeto com o nome da atividade desejada. Em nosso caso, podemos usar "MathSquareOfSum".
-
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.

-
Selecione Criar para ir até o designer de código e começar a escrever o código da atividade.
-
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.
-
Pesquise as referências
System.ActivitieseSystem.ComponentModel.Compositione 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.

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

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

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

O item do Designer de atividades é adicionado e o arquivo
.xamlcorrespondente é aberto imediatamente. Ele deve ser parecido com este:
-
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:

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

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