- Überblick
- Benutzerdefinierte Aktivitäten
- Migrieren von Aktivitäten zu .NET 6
- Versionshinweise
- Erstellen von Workflow-Analyseregeln
- Projekteinstellungen für das Erstellen von Aktivitäten
- Erstellen benutzerdefinierter Assistenten
- Priorisieren von Aktivitäten nach Scope
- 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
- Trigger SDK
Projekteinstellungen für das Erstellen von Aktivitäten
https://pkgs.dev.azure.com/uipath/Public.Feeds/_packaging/UiPath-Official/nuget/v3/index.json
) können Sie eigene benutzerdefinierte Aktivitätsprojekteinstellungen in Studio erstellen und hinzufügen. Informationen zur Verwendung der API finden Sie unter Studio-Aktivitäten-SDK.
Aktivitätsprojekteinstellungen umfassen eine Reihe von Optionen, die auf Projektebene direkt aus dem Fenster Projekteinstellungen angepasst werden können.
Im folgenden Beispiel wird eine Reihe von Einstellungen für eine Musikplayer-Beispielaktivität erstellt.
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);
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:
-
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; }
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:
-
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); }
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:
-
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); }
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:
-
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 <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; }
Dies führt zu:
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 abProcessName
– ruft den Prozessnamen abProcessVersion
– ruft die Prozessversion abWorkflowFilePath
– ruft den vollständigen Pfad des Prozesses abInitiatedBy
: ruft die Quelle eines Auftrags ab (Roboter, Studio, Orchestrator usw.)FolderId
– ruft die Ordner-ID des Prozesses abFolderName
– ruft den Ordnernamen des Prozesses abTenantId
– ruft die Mandanten-ID abTenantKey
– ruft den Mandantenschlüssel abTenantName
– ruft den Mandantennamen abRobotName
– ruft den Roboternamen abLicenseType
– ruft den Roboterlizenztyp abRuntimeGovernanceEnabled
– liefert Informationen, ob Runtime Governance aktiviert ist oder nichtInternalArguments
– ruft alle internen Argumente des Prozesses abOrganizationId
– ruft die Organisations-ID ab-
PictureInPictureMode
- ruft den Typ des verwendeten Bild-in-Bild-Modus ab. Die folgenden Werte sind verfügbar:Main
– der Prozess wird in der Windows-Hauptsitzung ausgeführtPictureInPictureSession
– der Prozess wird in der BiB-Sitzung ausgeführtPictureInPictureDesktop
– der Prozess wird im virtuellen BiB-Desktopmodus ausgeführt
LogMessage
- Generiert Roboter-Ausführungsprotokolle gemäß einer von Ihnen angegebenen Protokollierungsstufe . Weitere Informationen zu Protokollen finden Sie auf dieser Seite. Die folgenden Eigenschaften werden unterstützt:EventType
– die abzurufende ProtokollierungsebeneMessage
– die anzuzeigende Meldung
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}"
});
}
}
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}"
});
}
}
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.
- Launch NuGet Package Explorer.
- 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.
- Klicken Sie mit der rechten Maustaste auf den Abschnitt Paketinhalte (Package contents). Ein Kontextmenü wird angezeigt.
- Klicken Sie auf lib-Ordner hinzufügen (Add lib folder). Ein neues lib (lib)-Element wurde im Bereich Paketinhalt (Package contents) erstellt.
- Drücken Sie die rechte Maustaste auf lib (lib) und wählen Sie Bestehende Datei hinzufügen (Add Existing File)….
- Laden Sie die externe Zusammenstellung (.dll) Ihres Projekts.
- Klicken Sie auf > Bearbeiten; Metadaten bearbeiten (Edit > Edit Metadata). Der Bereich Paketmetadaten (Package metadata) wird angezeigt.
- Befüllen Sie die Felder, um Ihr Projekt sinnvoll beschreiben zu können.
- 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.
-
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.
.nupkg
-Datei erstellt wurde, fügen Sie sie einem benutzerdefinierten Feed in Studio hinzu, wie hiererläutert.
Öffnen Sie das Fenster Pakete verwalten, und installieren Sie das Paket. Stellen Sie sicher, dass der benutzerdefinierte Feed in Studio aktiviert ist.
Zusammengenommen sind die oben erstellte Registerkarte, der Abschnitt und die Einstellungen im Fenster Aktivitätsprojekteinstellungen sichtbar:
Folgen Sie einfach dem untenstehenden Link, um das Beispiel herunterzuladen, das auch ein Beispiel für das Erstellen benutzerdefinierter Assistentenenthält.