Abonnieren

UiPath Studio

UiPath Studio-Anleitung

Projekteinstellungen für das Erstellen von Aktivitäten

Mithilfe des Pakets UiPath.Activities.API aus dem offiziellen Feed (https://www.myget.org/F/workflow) können Sie eigene benutzerdefinierte Aktivitätsprojekteinstellungen in Studio erstellen und hinzufügen.

📘

Wichtig!

Das UiPath.Activities.API-Paket muss als Entwicklungsabhängigkeit in Ihrem benutzerdefinierten Projekt verwendet werden. Lesen Sie mehr über Entwicklungsabhängigkeiten.

Activity project settings encompass a set of options that can be adjusted on a project level directly from the Project Settings window.

10821082

So verwenden Sie die API

Wenn die Aktivitäten in Studio geladen werden, wird auf verschiedene Arten ein Verweis auf IWorkflowDesignApi bereitgestellt:

  1. Fügen Sie innerhalb der IRegisterMetadata-Implementierung eine public void Initialize(object api)-Methode hinzu. Diese Methode wird während des Aktivitätsladevorgangs aufgerufen, und die Aktivität kann den api-Parameter für die spätere Verwendung speichern.
  2. Definieren Sie eine Klasse, die IRegisterWorkflowDesignApi implementiert. Die Methode IRegisterWorkflowDesignApi.Initialize(IWorkflowDesignApi api) wird während des Aktivitätsladevorgangs aufgerufen, und die Aktivität kann den api-Parameter für die spätere Verwendung speichern. Wenn Sie diese Methode verwenden, können nur Studio-Versionen ab 2019.6 Ihr Paket laden.
  3. Rufen Sie einen Verweis auf das api-Objekt ab, indem Sie context.Services.GetService<IWorkflowDesignApi>() aufrufen, bei dem context ein System.Activities.Presentation.EditingContext ist, auf den in der Regel Aktivitätsdesigner zugreifen können.

Auf Funktionsschlüssel überprüfen

Vorab muss eine Überprüfung auf DesignFeatureKeys durchgeführt werden, um zu sehen, ob die erforderlichen Funktionsschlüssel unterstützt werden.
Die folgenden Funktionstasten werden ab 2019.10.1 von Studio unterstützt, können sich jedoch in einer zukünftigen Version ändern.

namespace UiPath.Studio.Activities.Api
{
    /// <summary>
    /// Supported Studio feature keys.
    /// </summary>
    public static class DesignFeatureKeys
    {
        /// <summary>
        /// Studio 19.8
        /// </summary>
        public const string Settings = nameof(Settings) + "V1";

        /// <summary>
        /// Studio 19.8
        /// </summary>
        public const string Theme = nameof(Theme) + "V1";

        /// <summary>
        /// Studio 19.8
        /// </summary>
        public const string Wizards = nameof(Wizards) + "V1";

        /// <summary>
        /// Studio 19.8
        /// </summary>
        public const string AccessProvider = nameof(AccessProvider) + "V1";

        /// <summary>
        /// Studio 19.10
        /// </summary>
        public const string Telemetry = nameof(Telemetry) + "V1";
    }
}

In order to check for a feature, you need to call the HasFeature method on the IWorkflowDesignApi reference, otherwise calls to the relevant api methods might fail with MissingMemberException or MissingMethodException on older Studio versions.

IWorkflowDesignApi studioActivitiesApi;
            // How to check for a feature.
            if (studioActivitiesApi.HasFeature(UiPath.Studio.Activities.Api.DesignFeatureKeys.Settings))
            {
                // Call Method or lambda that is using specific feature
                // This ensures that the code is JIT compiled only after the feature check
           }

Aktivitätseinstellungen erstellen

Im folgenden Beispiel wird eine Reihe von Einstellungen für eine Musikplayer-Beispielaktivität erstellt.

Registerkarte und Abschnitt hinzufügen

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

Dadurch werden dem Fenster Aktivitätsprojekteinstellungen eine Registerkarte und ein Abschnitt hinzugefügt. Die Registerkartenbeschreibung ist sichtbar, wenn Sie den Mauszeiger über die QuickInfo der Registerkarte bewegen:

10471047

Einstellungen hinzufügen

  • Abschnitt „Erweiterbare Einstellungen“:
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;
        }

Dies führt zu:

938938
  • Optionsfeld für boolesche Werte:
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);
        }

Dies führt zu:

785785
  • Multiple-Choice-Liste der Werte:
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);
        }

Dies führt zu:

783783
  • Eingabetextfeld mit Validierung:
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 `{s}`";
private static string ValidateSimpleStringSetting(string arg)
        {
            if (arg?.ToLowerInvariant().Contains("invalid") == true)
            {
                return "The sample string setting is invalid if it contains the `invalid` keyword";
            }

            return string.Empty;
        }

Dies führt zu:

781781

Prozess-ID und Protokolle abrufen

Mithilfe von Methoden, die auf die IExecutorRuntime-Referenz angewendet werden, können Sie Informationen über die Prozess-ID abrufen, die vom Roboter ausgeführt wird, sowie Ausführungsprotokolle. Es können die folgenden Methoden verwendet werden:

  • IRunningJobInformation – sammelt Informationen über den ausgeführten Prozess und unterstützt die folgenden Eigenschaften:
    • JobID – ruft die Prozess-ID ab
    • ProcessName – ruft den Prozessnamen ab
    • ProcessVersion – ruft die Prozessversion ab
    • WorkflowFilePath – ruft den vollständigen Pfad des Prozesses ab
  • LogMessage - Generates Robot Execution Logs according to a Logging Level you specify. Read more about logs on this page. The following properties are supported:
    • EventType – die abzurufende Protokollierungsebene
    • Message – die anzuzeigende Meldung

Der folgende Code veranschaulicht die Verwendung der LogMessage-Methode:

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

Projekt zu Studio hinzufügen

Um die Einstellungen in Studio im Fenster Aktivitätsprojekteinstellungen sichtbar zu machen, müssen Sie Ihre benutzerdefinierten Aktivitäten in einem NuGet-Paket veröffentlichen und für einen Feed verfügbar machen, der in Studio, Version 2019.10.1 oder höher, definiert ist.

Erstellen des NuGet-Pakets (NuGet Package)

12801280
  1. NuGet-Paket-Explorer starten (Launch NuGet Package Explorer).
  2. Klicken Sie auf Ein neues Paket erstellen (Strg + N) (Create a new package (Ctrl + N)). Ein geteiltes Fenster wird angezeigt, in dem Paketmetadaten (Package metadata)und Paketinhalt (Package contents) angezeigt werden. Im letzten Abschnitt müssen alle Abhängigkeiten hinzugefügt werden.
  3. Klicken Sie mit der rechten Maustaste auf den Abschnitt Paketinhalte (Package contents). Ein Kontextmenü wird angezeigt.
  4. Klicken Sie auf lib-Ordner hinzufügen (Add lib folder). Ein neues lib (lib)-Element wurde im Bereich Paketinhalt (Package contents) erstellt.
  5. Drücken Sie die rechte Maustaste auf lib (lib) und wählen Sie Bestehende Datei hinzufügen (Add Existing File)….
  6. Laden Sie die externe Zusammenstellung (.dll) Ihres Projekts.
  7. Klicken Sie auf &gt Bearbeiten; Metadaten bearbeiten (Edit > Edit Metadata). Der Bereich Paketmetadaten (Package metadata) wird angezeigt.
  8. Befüllen Sie die Felder, um Ihr Projekt sinnvoll beschreiben zu können.
  9. Füllen Sie das Feld Id aus und geben Sie das Schlüsselwort "Aktivitäten" ein, damit das Paket in Studio im Fenster "Pakete verwalten" angezeigt werden kann.
  10. Klicken Sie auf Datei > Speichern (File > Save). In unserem Fall wird die Datei .nupkg erstellt.

📘

Hinweis:

Erstellen Sie eine intuitive Ordnerstruktur für Ihre Aktivitäten. Alle leeren Ordner in Ihrer benutzerdefinierten Aktivität werden bei der Verwendung mit dem Orchestrator entfernt.

Installieren Sie das NuGet-Paket in UiPath Studio

Once the .nupkg file is created, add it to a custom feed in Studio, as explained here.

Open the Manage Packages window and install the package. Make sure the custom feed is enabled in Studio.

Beispieleinstellungen

Zusammengenommen sind die oben erstellte Registerkarte, der Abschnitt und die Einstellungen im Fenster Aktivitätsprojekteinstellungen sichtbar:

10491049

Simply follow the link below to download the sample, which also contains an example of creating wizards.

Beispiel herunterladen

Aktualisiert vor 2 Jahren


Projekteinstellungen für das Erstellen von Aktivitäten


Auf API-Referenzseiten sind Änderungsvorschläge beschränkt

Sie können nur Änderungen an dem Textkörperinhalt von Markdown, aber nicht an der API-Spezifikation vorschlagen.