- Visão geral
- Atividades personalizadas
- Migrando 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
Criando Atividades com Código (Legado)
There are two major steps required to create a custom activity:
- Writing the custom activity code.
- Adding the external assembly (.dll) in UiPath.
Os seguintes componentes são necessários para criar uma atividade personalizada:
- Microsoft Visual Studio com a carga de trabalho de desenvolvimento de área de trabalho do .NET instalada.
- Explorador de Pacotes NuGet.
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.
- Clique em 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 que usam C# é exibida.
- Selecione a Biblioteca de Classes (.NET Framework). Isso nos ajuda a exportar a atividade personalizada como um arquivo
.dll
. Clique em Avançar para acessar a janela Configurar seu novo projeto - Preencha o campo Nome do projeto com o nome da atividade desejada. No nosso caso, podemos usar "MathSquareOfSum".
- Selecione .NET Framework 4.6.1 no menu suspenso Estrutura . Isso garante que a biblioteca é compatível com o UiPath Studio.
- Clique em Criar para acessar 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 na ramificação Referências e selecione Adicionar Referência.... A janela Gerenciador de Referência é exibida.
-
Procure as referências
System.Activities
eSystem.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. -
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) { }
<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.
<ReguiredArgument>
é necessário se você quiser que um elemento declarado seja obrigatório para entrada. Se não estiver preenchido, um ícone de alerta azul aparece na barra de título da atividade.
<Execute( )>
. Em nosso caso, ele se parece com isto:
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);
}
Se não quiser que sua atividade tenha uma interface de designer, pule para a seção “Construa a biblioteca”.
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.
13. Clique com o botão direito do mouse no projeto no painel Propriedades (em nosso caso, o projeto é MathSquareOfSum). O menu de contexto é exibido.
14. Em Adicionar item, selecione Novo Item.... A janela Adicionar Novo Item será exibida.
15. Clique em Fluxo de trabalho na categoria Instalado no painel esquerdo. Todos os elementos relacionados são exibidos.
16. Selecione Designer de atividades e clique em Adicionar para incluir o item no projeto.
.xaml
correspondente é aberto imediatamente. Deve ser parecido com isto:
17. Substitua o código do Designer de atividades existente 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:
18. Clique com o botão direito na atividade (em nosso caso, ActMathSquareOfSum) e, no menu Adicionar , selecione Classe.... A janela Adicionar Novo Item será exibida.
20. 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());
}
}
}
Certifique-se de testar se há erros no projeto antes de tentar criá-lo.
MathSquareOfSum.dll
agora é criada e salva no seguinte local:
%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
Após a biblioteca ser criada, o painel Saída deve exibir uma mensagem conforme descrito abaixo:
- Inicie o Explorador de Pacotes NuGet e clique em Criar um novo pacote (Ctrl + N). Uma janela bipartida será exibida com os metadados do pacote e o conteúdodo pacote . Precisamos adicionar todas as dependências na seção final.
- Clique com o botão direito do mouse dentro da seção Conteúdo do Pacote . O menu de contexto é exibido.
- Clique em Adicionar pasta lib. Observe que um novo item lib será criado na seção Conteúdo do Pacote.
-
Clique com o botão direito do mouse em lib e selecione Adicionar Arquivo Existente....
- Carregue o assembly externo (
.dll
) criado acima. No nosso caso, o arquivoMathSquareOfSum.dll
está localizado na pasta%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
. - Com o arquivo selecionado, acesse o menu Editar e selecione Editar metadados. O painel esquerdo agora possui campos editáveis de metadados.
- Fill in the fields as you see fit to better describe your custom activity.
-
Preencha o campo Id . No nosso caso, pode ser UiPath.MathSquare.Activities, onde o primeiro valor, UiPath, representa a equipe que criou o pacote. Se nenhuma equipe específica estiver envolvida, o primeiro valor pode ficar em branco.
- Clique no botão de marca de seleção verde no canto superior esquerdo da seção Metadados do pacote para salvar todas as alterações.
- No menu Arquivo , selecione Salvar como.... Uma janela do explorer será exibida, permitindo que você escolha o local do novo arquivo.
- Salve o arquivo na pasta em que os pacotes locais são armazenados pela UiPath (
C:\Program Files (x86)\UiPath\Studio\Packages
em versões anteriores à 2021.4 ouC:\Program Files\UiPath\Studio\Packages
a partir da versão 2021.4). O arquivoUiPath.MathSquare.Activities.1.0.0.nupkg
agora é criado na pastaUiPath.MathSquare.Activities
dentro da pasta de pacotes.
- Acesse o Gerenciador de Pacotes a partir do Studio.
- Como o pacote NuGet foi salvo na pasta de pacotes locais, a atividade deve ficar disponível no feed Local .
- Procure a atividade e clique em Instalar e depois em Salvar. A nova atividade já está instalada e pode ser usada em seus projetos de automação.