- Vue d'ensemble (Overview)
- Activités personnalisées (Custom Activities)
- Migration des activités vers .NET 6
- Notes de publication
- Création de règles d'analyse de flux de travail
- Création de paramètres de projet d'activité
- Création d'assistants personnalisés
- Classer les activités par ordre de priorité
- 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
- SDK de déclencheurs
Création d'activités avec du code (héritage)
Deux grandes étapes sont requises pour créer une activité personnalisée :
- Écriture du code de l'activité personnalisée.
- Ajout de l'assembly externe (.dll) dans UiPath.
Les composants suivants sont requis pour créer une activité personnalisée :
- Microsoft Visual Studio avec la charge de travail de développement de bureau .NET installée.
- Explorateur de packages NuGet.
Pour mieux comprendre comment écrire le code d'une activité personnalisée, nous allons créer une activité simple qui demande à l'utilisateur deux nombres, puis génère le carré de leur somme.
- Lancer Microsoft Visual Studio.
- Cliquer sur Fichier > Nouveau > Projet (File > New >Project) (raccourci : Ctrl + Maj + N). La fenêtre Nouveau Projet (New Project) apparaît.
- Sélectionnez C# dans le menu déroulant Langues . La liste de toutes les dépendances utilisant C# s'affiche.
- Sélectionnez Bibliothèque de classes (.NET Framework). Cela nous aide à exporter l'activité personnalisée sous forme de fichier
.dll
. Cliquez sur Suivant ( Next ) pour accéder à la fenêtre Configurer votre nouveau projet (Configure your new project) . - Remplissez le champ Nom du projet (Project name ) avec le nom de l'activité souhaitée. Dans notre cas, nous pouvons utiliser « MathSquareOfSum ».
- Sélectionnez .NET Framework 4.6.1 dans le menu déroulant Framework . Cela garantit que la bibliothèque est compatible avec UiPath Studio.
- Cliquez sur Créer ( Create ) pour accéder au concepteur de code et commencer à écrire le code de l'activité.
- Dans le panneau Explorateur de solutions , cliquez avec le bouton droit sur la branche Références et sélectionnez Ajouter une référence... (Add Reference...). La fenêtre Gestionnaire de références ( Reference Manager) s'affiche.
-
Recherchez les références
System.Activities
etSystem.ComponentModel.Composition
et ajoutez-les. Assurez-vous de cocher la case devant chacun d'eux et cliquez sur OK. Cela nous permet d’utiliser les classes des références susmentionnées. -
Maintenant, nous devons nous assurer que notre code utilise les références nouvellement ajoutées. Cela se fait en ajoutant les lignes suivantes dans le concepteur de code :
using System.Activities; using System.ComponentModel;
using System.Activities; using System.ComponentModel;Notre projet devrait maintenant ressembler à ceci :
-
Ajoutez les paramètres d'entrée et de sortie. Dans notre cas, le code devrait ressembler à ceci :
//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(" ")>
est le libellé qui s'affiche avant le champ de saisie dans le panneau Propriétés (Properties) de Studio. L'attribut <Description(" ")>
est le texte de l'info-bulle affichée au survol de la souris.
<ReguiredArgument>
est nécessaire si vous souhaitez qu'un élément déclaré soit obligatoire pour l'entrée. Si elle n'est pas renseignée, une icône d'avertissement bleue apparaît dans la barre de titre de l'activité.
<Execute( )>
. Dans notre cas, cela ressemble à ceci :
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);
}
Si vous ne souhaitez pas que votre activité ait une interface de concepteur, vous pouvez passer à la section construction de la bibliothèque.
Pour créer une interface de concepteur, le composant Windows Workflow Foundation doit être installé dans Visual Studio. Si vous n'avez pas sélectionné le composant dans le programme d'installation Visual Studio, vous pouvez l'ajouter comme suit :
- Dans Visual Studio, cliquez sur le menu Outils et sélectionnez Obtenir les outils et fonctionnalités.... La fenêtre Visual Studio Installer s'affiche.
- Basculez sur l'onglet Composants individuels ( Individual Components ) et recherchez le composant Windows Workflow Foundation . Il se trouve sous la section Activités de développement (Development activities ).
- Cochez la case devant le composant Windows Workflow Foundation et cliquez sur Modifier ( Modify). Le composant requis est installé.
13. Cliquez avec le bouton droit sur le projet dans le panneau Propriétés (Properties) (dans notre cas, le projet est MathSquareOfSum). Le menu contextuel s'affiche.
14. Dans Ajouter un élément (Add item), sélectionnez Nouvel élément... ( New Item...). La fenêtre Ajouter un nouvel élément (Add New Item ) s'affiche.
15. Cliquez sur Workflow (Workflow) dans la catégorie Installé (Installed) dans le panneau de gauche. Tous les éléments associés sont affichés.
16. Sélectionnez Concepteur d'activités et cliquez sur Ajouter ( Add ) pour inclure l'élément dans le projet.
.xaml
correspondant est immédiatement ouvert. Il devrait ressembler à ceci :
17. Remplacez le code du concepteur d'activités existant par le suivant :
<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>
La nouvelle mise en page définie pour l'activité devrait maintenant ressembler à ceci :
18. Cliquez avec le bouton droit sur l'activité (dans notre cas, ActMathSquareOfSum), et dans le menu Ajouter (Add), sélectionnez Classe...(Class...). La fenêtre Ajouter un nouvel élément (Add New Item ) s'affiche.
20. Ajoutez le contenu suivant dans la classe Métadonnées Concepteur (DesignerMetadata) créée :
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());
}
}
}
Assurez-vous de tester le projet pour les erreurs avant d'essayer de le générer.
MathSquareOfSum.dll
est maintenant créée et enregistrée à l'emplacement suivant :
%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
Une fois la bibliothèque créée, le panneau Sortie (Output) doit afficher un message, comme illustré ci-dessous :
- Lancez NuGet Package Explorer et cliquez sur Créer un nouveau package (Create a new package) (Ctrl + N). Une fenêtre divisée s'affiche, affichant les Métadonnées du package ( Package metadata) et le Contenu du package ( Package contents). Nous devons ajouter toutes les dépendances dans la dernière section.
- Cliquez avec le bouton droit dans la section Contenu du package ( Package contents ). Un menu contextuel s'affiche.
- Cliquez sur Ajouter un dossier lib (Add lib folder). Notez qu'un nouvel élément lib (lib) est créé dans la section Contenu du package (Package contents).
-
Cliquer sur lib (lib) avec le bouton droit de la souris et sélectionner Ajouter un fichier existant... (Add Existing File...).
- Chargez l'assembly externe (
.dll
) créé ci-dessus. Dans notre cas, le fichierMathSquareOfSum.dll
est situé dans le dossier%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
. - Une fois le fichier sélectionné, accédez au menu Modifier (Edit) et sélectionnez Modifier les métadonnées ( Edit Metadata). Le panneau de gauche est désormais équipé de champs de métadonnées modifiables.
- Renseigner les champs comme il vous convient pour décrire plus précisément votre activité personnalisée.
-
Remplissez le champ ID . Dans notre cas, il peut s’agir de UiPath.MathSquare.Activities, où la première valeur, UiPath, représente l’équipe qui a créé le package. Si aucune équipe particulière n'était impliquée, la première valeur peut être laissée vide.
- Cliquez sur la coche verte dans le coin supérieur gauche de la section Métadonnées du package ( Package metadata ) pour enregistrer toutes les modifications.
- Dans le menu Fichier (File), sélectionnez Enregistrer sous... ( Save As...). Une fenêtre d'explorateur apparaît, vous permettant de choisir l'emplacement du nouveau fichier.
- Enregistrez le fichier dans le dossier dans lequel les packages locaux sont stockés par UiPath (
C:\Program Files (x86)\UiPath\Studio\Packages
dans les versions antérieures à 2021.4 ouC:\Program Files\UiPath\Studio\Packages
à partir de la version 2021.4). Le fichierUiPath.MathSquare.Activities.1.0.0.nupkg
est maintenant créé dans le dossierUiPath.MathSquare.Activities
à l’intérieur du dossier packages.
- Accédez au Gestionnaire de paquets (Package Manager) depuis Studio.
- Étant donné que nous avons enregistré le package NuGet dans le dossier des packages locaux, l’activité doit être disponible dans le flux local .
- Recherchez l'activité et cliquez sur Installer ( Install ), puis sur Enregistrer ( Save). La nouvelle activité est maintenant installée et peut être utilisée dans vos projets d’automatisation.