SDK
Plus récente (Latest)
False
Image de fond de la bannière
Guide du développeur
Dernière mise à jour 23 mars 2024

Création de paramètres de projet d'activité

À l'aide du package UiPath.Activities.API du flux Official (Officiel) (https://pkgs.dev.azure.com/uipath/Public.Feeds/_packaging/UiPath-Official/nuget/v3/index.json), vous pouvez créer et ajouter vos propres paramètres de projet d'activité personnalisés dans Studio. Pour plus d'informations sur l'utilisation de l'API, consultez SDK Activités Studio ( Studio Activities SDK).
Remarque : le package UiPath.Activities.API doit être utilisé comme dépendance de développement dans votre projet personnalisé. En savoir plus sur Dépendances de développement.

Les paramètres de projet d'activité englobent un ensemble d'options qui peuvent être ajustées au niveau du projet directement à partir de la fenêtre Paramètres du projet (Project Settings).



Créer des paramètres d'activité

L'exemple suivant crée un ensemble de paramètres pour un exemple d'activité de lecteur de musique.

Ajouter l'onglet et la section

using UiPath.Studio.Activities.Api;
using UiPath.Studio.Activities.Api.Settings;
namespace MyCustomActivityPack
{
    public static class SettingsCreator
    {
        // This is the key used to reference a tab, even across packages.
        internal const string CategoryKey = "DemoTabUniqueKey";
        // This is the key used to reference the setting, even across packages.
        internal const string CommentTextKey = CategoryKey + ".Comment";
        internal const string PresetKey = CategoryKey + ".Preset";
        internal const string ShuffleKey = CategoryKey + ".Shuffle";
        public static void CreateSettings(IWorkflowDesignApi workflowDesignApi)
        {
            var settingsApi = workflowDesignApi.Settings;
            // Add the category (a tab in the settings page)
            var category = new SettingsCategory()
            {
                Description = "Settings Sample",
                Header = "Settings Sample",
                Key = CategoryKey
            };
            settingsApi.AddCategory(category);
            AddMusicPlayerSection(settingsApi, category);
            AddMiscSettings(settingsApi, category);using UiPath.Studio.Activities.Api;
using UiPath.Studio.Activities.Api.Settings;
namespace MyCustomActivityPack
{
    public static class SettingsCreator
    {
        // This is the key used to reference a tab, even across packages.
        internal const string CategoryKey = "DemoTabUniqueKey";
        // This is the key used to reference the setting, even across packages.
        internal const string CommentTextKey = CategoryKey + ".Comment";
        internal const string PresetKey = CategoryKey + ".Preset";
        internal const string ShuffleKey = CategoryKey + ".Shuffle";
        public static void CreateSettings(IWorkflowDesignApi workflowDesignApi)
        {
            var settingsApi = workflowDesignApi.Settings;
            // Add the category (a tab in the settings page)
            var category = new SettingsCategory()
            {
                Description = "Settings Sample",
                Header = "Settings Sample",
                Key = CategoryKey
            };
            settingsApi.AddCategory(category);
            AddMusicPlayerSection(settingsApi, category);
            AddMiscSettings(settingsApi, category);

Cela ajoute un onglet et une section à la fenêtre Paramètres de projet d'activité (Activity Project Settings). La description de l'onglet est visible lorsque vous survolez l'info-bulle de l'onglet :



Ajouter des paramètres

  • Section des paramètres extensibles :

    private static SettingsSection AddMusicPlayerSection(IActivitiesSettingsService settingsApi, SettingsCategory category)
            {
                var section = new SettingsSection()
                {
                    Description = "Settings for a music player",
                    IsExpanded = true, //set this to control default expansion
                    Title = "Music Player Settings",
                    // the key of a section has to be unique only within the category
                    Key = "Player"
                };
                settingsApi.AddSection(category, section);
                AddSimpleBoolean(settingsApi, section);
                AddSingleChoice(settingsApi, section);
                return section;
            }private static SettingsSection AddMusicPlayerSection(IActivitiesSettingsService settingsApi, SettingsCategory category)
            {
                var section = new SettingsSection()
                {
                    Description = "Settings for a music player",
                    IsExpanded = true, //set this to control default expansion
                    Title = "Music Player Settings",
                    // the key of a section has to be unique only within the category
                    Key = "Player"
                };
                settingsApi.AddSection(category, section);
                AddSimpleBoolean(settingsApi, section);
                AddSingleChoice(settingsApi, section);
                return section;
            }

Cela donne :



  • Case d'option des valeurs booléennes :

    private static void AddSimpleBoolean(IActivitiesSettingsService settingsApi, SettingsSection section)
            {
                var booleanSetting = new SingleValueEditorDescription<bool>
                {
                    DefaultValue = true,
                    Description = "If active, the playlist is shuffled",
                    // The value returned by GetDisplayValue should be localized
                    GetDisplayValue = b => b ? "On" : "Off",
                    Key = ShuffleKey,
                    Label = "Shuffle"
                };
                settingsApi.AddSetting(section, booleanSetting);
            }private static void AddSimpleBoolean(IActivitiesSettingsService settingsApi, SettingsSection section)
            {
                var booleanSetting = new SingleValueEditorDescription<bool>
                {
                    DefaultValue = true,
                    Description = "If active, the playlist is shuffled",
                    // The value returned by GetDisplayValue should be localized
                    GetDisplayValue = b => b ? "On" : "Off",
                    Key = ShuffleKey,
                    Label = "Shuffle"
                };
                settingsApi.AddSetting(section, booleanSetting);
            }

Cela donne :



  • Liste de valeurs à choix multiples :

    private static void AddSingleChoice(IActivitiesSettingsService settingsApi, SettingsSection category)
            {
                var booleanSetting = new SingleValueSelectorDescription
                {
                    DefaultValue = "pop",
                    Values = new[] { "classic", "pop", "rock" },
                    Description = "Sample single choice setting",
                    // The value returned by GetDisplayValue should be localized
                    GetDisplayValue = choice => choice + " music",
                    Key = PresetKey,
                    Label = "Mixer Preset"
                };
                settingsApi.AddSetting(category, booleanSetting);
            }private static void AddSingleChoice(IActivitiesSettingsService settingsApi, SettingsSection category)
            {
                var booleanSetting = new SingleValueSelectorDescription
                {
                    DefaultValue = "pop",
                    Values = new[] { "classic", "pop", "rock" },
                    Description = "Sample single choice setting",
                    // The value returned by GetDisplayValue should be localized
                    GetDisplayValue = choice => choice + " music",
                    Key = PresetKey,
                    Label = "Mixer Preset"
                };
                settingsApi.AddSetting(category, booleanSetting);
            }

Cela donne :



  • Champ de texte d'entrée avec validation :

    private static void AddSimpleString(IActivitiesSettingsService settingsApi, SettingsSection section)
            {
                var simpleStringSetting = new SingleValueEditorDescription<string>()
                {
                    Description = "A free text comment that can't contain the word 'invalid'",
                    // The GetDisplayValue obtains a localized screen representation of the underlying setting value.
                    GetDisplayValue = LocalizeSimpleSettingValue,
                    IsReadOnly = false,
                    DefaultValue = "There is no comment",
                    Label = "Comment",
                    Validate = ValidateSimpleStringSetting,
                    Key = CommentTextKey
                };
                // Add the setting to the section.
                // A setting may also be directly added on a category. It will appear as a setting without a section (top level setting)
                settingsApi.AddSetting(section, simpleStringSetting);
            }
    private static string LocalizeSimpleSettingValue(string s) => $"A localized value of <code>{s}</code>";
    private static string ValidateSimpleStringSetting(string arg)
            {
                if (arg?.ToLowerInvariant().Contains("invalid") == true)
                {
                    return "The sample string setting is invalid if it contains the <code>invalid</code> keyword";
                }
                return string.Empty;
            }private static void AddSimpleString(IActivitiesSettingsService settingsApi, SettingsSection section)
            {
                var simpleStringSetting = new SingleValueEditorDescription<string>()
                {
                    Description = "A free text comment that can't contain the word 'invalid'",
                    // The GetDisplayValue obtains a localized screen representation of the underlying setting value.
                    GetDisplayValue = LocalizeSimpleSettingValue,
                    IsReadOnly = false,
                    DefaultValue = "There is no comment",
                    Label = "Comment",
                    Validate = ValidateSimpleStringSetting,
                    Key = CommentTextKey
                };
                // Add the setting to the section.
                // A setting may also be directly added on a category. It will appear as a setting without a section (top level setting)
                settingsApi.AddSetting(section, simpleStringSetting);
            }
    private static string LocalizeSimpleSettingValue(string s) => $"A localized value of <code>{s}</code>";
    private static string ValidateSimpleStringSetting(string arg)
            {
                if (arg?.ToLowerInvariant().Contains("invalid") == true)
                {
                    return "The sample string setting is invalid if it contains the <code>invalid</code> keyword";
                }
                return string.Empty;
            }

Cela donne :



Obtenir l'ID de processus et les journaux

En utilisant des méthodes appliquées à la référence IExecutorRuntime, vous pouvez obtenir des informations sur l'ID de processus exécuté par le Robot, ainsi que les journaux d'exécution. Les méthodes suivantes peuvent être utilisées :
  • IRunningJobInformation : collecte des informations sur le processus en cours d'exécution et prend en charge les propriétés suivantes :
    • JobID : récupère l'ID de processus
    • ProcessName : récupère le nom du processus
    • ProcessVersion : récupère la version du processus
    • WorkflowFilePath : récupère le chemin complet du processus
    • InitiatedBy : récupère la source d’une tâche (Robot, Studio, Orchestrator, etc.)
    • FolderId : récupère l'ID de dossier du processus
    • FolderName : récupère le nom du dossier du processus
    • TenantId : récupère l'ID du locataire
    • TenantKey : récupère la clé du locataire
    • TenantName : récupère le nom du locataire
    • RobotName : récupère le nom du robot
    • LicenseType : récupère le type de licence du robot
    • RuntimeGovernanceEnabled : fournit des informations si la gouvernance de Runtime est activée ou non
    • InternalArguments : récupère tous les arguments internes du processus
    • OrganizationId : récupère l'ID de l'organisation
    • PictureInPictureMode : récupère le type de mode d'incrustation d'image utilisé. Les valeurs suivantes sont disponibles :
      • Main : le processus s'exécute dans la session Windows principale
      • PictureInPictureSession - le processus s'exécute dans la session PiP
      • PictureInPictureDesktop : le processus s'exécute en mode de bureau virtuel PiP
    • LogMessage : génère des Robot Execution Logs (Journaux d'exécution du Robot) selon un Niveau de journalisation (Logging Level) que vous spécifiez. Découvrez-en davantage sur les journaux sur cette page. Les propriétés suivantes sont prises en charge :
    • EventType : niveau de journalisation à récupérer
    • Message : message à afficher
Le code suivant illustre l'utilisation de la méthode LogMessage :
public class MyLogMessageActivity : CodeActivity
{
    protected override void Execute(CodeActivityContext context)
    {
        var executorRuntime = context.GetExtension<IExecutorRuntime>();
        var jobInfo = executorRuntime.RunningJobInformation;
        executorRuntime.LogMessage(new LogMessage
        {
            EventType = TraceEventType.Warning,
            Message = $"Job {jobInfo.JobId}: My log message from workflow {jobInfo.WorkflowFilePath}"
        });
    }
}public class MyLogMessageActivity : CodeActivity
{
    protected override void Execute(CodeActivityContext context)
    {
        var executorRuntime = context.GetExtension<IExecutorRuntime>();
        var jobInfo = executorRuntime.RunningJobInformation;
        executorRuntime.LogMessage(new LogMessage
        {
            EventType = TraceEventType.Warning,
            Message = $"Job {jobInfo.JobId}: My log message from workflow {jobInfo.WorkflowFilePath}"
        });
    }
}

Ajouter le projet à Studio

Pour rendre les paramètres visibles dans Studio dans la fenêtre Paramètres de projet d'activité (Activity Project Settings), vous devez publier vos activités personnalisées dans un paquet NuGet et les mettre à disposition d'un flux défini dans Studio, version 2019.10.1 ou ultérieures.

Créer le paquet NuGet



  1. Lancer NuGet Package Explorer.
  2. Cliquez sur Créer un nouveau paquet (Create a new package) (Ctrl + N). Une fenêtre divisée s'ouvre, affichant Métadonnées de paquet (Package metadata) et Contenu du paquet (Package content). Il faut ajouter toutes les dépendances dans cette dernière section.
  3. Cliquez avec le bouton droit sur la section Contenu du paquet (Package content). Un menu contextuel s'affiche.
  4. 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).
  5. Cliquer sur lib (lib) avec le bouton droit de la souris et sélectionner Ajouter un fichier existant... (Add Existing File...).
  6. Chargez l'assembly externe (.dll) de votre projet.
  7. Cliquez sur Modifier > Modifier les métadonnées (Edit > Edit Metadata). La section Métadonnées du package (Package metadata) apparaît.
  8. Renseignez les champs de façon à décrire au mieux votre projet.
  9. Remplissez le champ ID (ID) et assurez-vous d'inclure le mot-clé “Activités” afin que le paquet puisse être affiché dans la fenêtre Gérer les paquets (Manage Packages), dans Studio.
  10. Click File > Save. In our case, the .nupkg file is created.
    Note: Be sure to create an intuitive folder structure for your activities. All empty folders inside the custom activity get removed when used with Orchestrator.

Installer le paquet NuGet dans UiPath Studio

Une fois le fichier .nupkg créé, ajoutez-le à un flux personnalisé dans Studio, comme expliqué ici.

Ouvrez la fenêtre Gérer les paquets (Manage Packages) et installez le paquet. Assurez-vous que le flux personnalisé est activé dans Studio.

Exemples de paramètres

Ensemble, l'onglet, la section et les paramètres créés ci-dessus sont visibles dans la fenêtre Paramètres de projet d'activité (Activity Project Settings) :



Suivez simplement le lien ci-dessous pour télécharger l'exemple, qui contient également un exemple de Création d'assistants personnalisés.

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Logo Uipath blanc
Confiance et sécurité
© 2005-2024 UiPath. All rights reserved.