- Vue d'ensemble (Overview)
- Activités personnalisées (Custom Activities)
- Comprendre la structure du projet d’activité
- Écriture du code de l'activité
- Configuration des métadonnées d'activité
- Génération de la solution et création du package NuGet
- Utilisation de l'activité dans un projet Studio
- Tester votre activité
- Écriture du code d'une activité personnalisée
- Ajout du fichier .dll de l'assembly externe dans UiPath Studio
- 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
- SDK Agents

Guide du développeur
Écriture du code d'une activité personnalisée
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.
-
Sélectionner Fichier > Nouveau > Projet
Ctrl + Shift + NLa fenêtre Nouveau projet s’affiche. -
Sélectionnez C# dans le menu déroulant Langages . La liste de toutes les dépendances C# apparaît.
-
Sélectionnez Bibliothèque de classes (.NET Framework). Ceci nous permet d'exporter l'activité personnalisée sous forme de fichier
.dll. Sélectionnez Suivant pour accéder à la fenêtre Configurer votre nouveau projet .
-
Renseignez le champ Nom du projet avec le nom d'activité souhaité. 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.
Important :Dans les projets hérités depuis Windows, UiPath Studio prend en charge les activités créées avec .NET Framework 4.5.2 jusqu'à 4.6.1. Pour en savoir plus sur la migration d'activités vers .NET afin qu'elles soient utilisées dans des projets avec la compatibilité Windows, consultez Migration d'activités vers .NET 6.

-
Sélectionnez Créer pour accéder au concepteur de code et commencer à écrire le code d’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.... La fenêtre Gestionnaire de références s'affiche.
-
Rechercher les références
System.ActivitiesetSystem.ComponentModel.Compositionet les ajouter. Assurez-vous de cocher la case en face de chacun d'eux et cliquez sur OK. Cela nous permet d'utiliser des 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) { }L'attribut
<DisplayName(" ")>est le libellé affiché avant le champ d'entrée dans le panneau Propriétés de Studio. L'attribut<Description(" ")>est le texte de l'info-bulle affichée lors du survol de la souris.
L'attribut
<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 de prudence apparaît dans la barre de titre de l'activité. -
Ajoutez la fonctionnalité dans la fonction remplacée
<Execute( )>. Dans notre cas, il 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); }
(Facultatif) Création d'une interface de concepteur
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 conception, 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 de 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 Programme d'installation de Visual Studio s'affiche.
- Basculez vers l'onglet Composants individuels et recherchez le composant Windows Workflow Foundation . Il se trouve dans la section des activités de Développement .
- Cochez la case en face du composant Windows Workflow Foundation et cliquez sur Modifier. Le composant requis est installé.

-
Faites un clic droit sur le projet à partir du panneau Propriétés (dans notre cas, le projet est MathSquareOfSum). Le menu contextuel s’affiche.
-
Dans le champ Ajouter un élément, sélectionnez Nouvel élément.... La fenêtre Ajouter un nouvel élément s'affiche.
-
Sélectionnez Workflow sous la catégorie Installed du panneau gauche. Tous les éléments associés sont affichés.
-
Sélectionnez Concepteur d'activités et cliquez sur Ajouter pour inclure l'élément dans le projet.

L’élément Concepteur d’activité est ajouté et le fichier
.xamlcorrespondant est ouvert immédiatement. Il devrait ressembler à ceci :
-
Remplacez le code Designer d'activités existant par le code 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="https://docs.uipath.com/fr/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/fr/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 :

-
Cliquez avec le bouton droit sur l'activité (dans notre cas ActMathSquareOfSum), et dans le menu Ajouter , sélectionnez Classe.... La fenêtre Ajouter un nouvel élément s'affiche.
-
L'élément Class est déjà sélectionné. Il suffit maintenant de le renommer DesignerMetadata.cs et de sélectionner Add. La nouvelle classe est maintenant ajoutée à l’activité et s’ouvre dans un nouvel onglet.

-
Ajoutez le contenu suivant dans la nouvelle classe ConcepteurMétadonnées :
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()); } } }