- Erste Schritte
- Einstellung und Konfiguration (Setup and Configuration)
- Automationsprojekte
- Über die Veröffentlichung von Automatisierungsprojekten
- Entwerfen von Automatisierungen
- Verwalten von Aktivitätspaketen
- Konfigurieren von Aktivitätsprojekteinstellungen
- Signieren von Paketen
- Governance
- Importieren von Entitäten
- Verknüpfen eines Projekts mit einer Idee im Automation Hub
- Verwenden des Data Managers
- Solutions (Lösungen)
- Abhängigkeiten
- Workflow-Typen
- Kontrollfluss
- Dateivergleich
- Beste Praktiken für die Automatisierung (Automation Best Practices)
- Integration der Quellenkontrolle
- Informationen zur Versionskontrolle
- Verwalten von Projekten mit TFS
- Verwalten von Projekten mit SVN
- Workflow Diff
- Das Source Control-Panel
- Debugging
- Protokollierung
- Das Diagnose-Tool
- Workflow-Analyse
- Über die Workflow-Analyse
- ST-NMG-001 – Namenskonvention für Variablen
- ST-NMG-002 – Namenskonvention für Argumente
- ST-NMG-004 – Duplizierung des Anzeigenamens
- ST-NMG-005 – Variable überschreibt Variable
- ST-NMG-006 – Variable überschreibt Argument
- ST-NMG-008 – Variablenlänge überschritten
- ST-NMG-009: Datentabellenvariablen mit Präfix versehen
- ST-NMG-011 – Datentabellenargumente mit Präfix versehen
- ST-NMG-012 – Standardwerte für Argumente
- ST-NMG-016 – Argumentlänge überschritten
- ST-NMG-017 – Der Klassenname stimmt mit dem Standard-Namespace überein
- ST-DBP-002 – Hohe Anzahl von Argumenten
- ST-DBP-003 – Leerer Catch-Block
- ST-DBP-007 – Mehrere Flussdiagrammebenen
- ST-DPB-010 – Mehrere Instanzen von [Workflow] oder [Testfall]
- ST-DBP-020 – Nicht definierte Ausgabeeigenschaften
- ST-DBP-021 – Hartcodiertes Timeout
- ST-DBP-023 – Leerer Workflow
- ST-DBP-024 – Prüfung der Persistenzaktivität
- ST-DBP-025 – Voraussetzung für Variablenserialisierung
- ST-DBP-027 – Bewährte Methode für Persistenz
- ST-DBP-028 – Voraussetzung für Argumentenserialisierung
- ST-USG-005 – Hartcodierte Aktivitätseigenschaften
- ST-USG-009 – Nicht verwendete Variablen
- ST-USG-010 – Nicht verwendete Abhängigkeiten
- ST-USG-014 – Paketbeschränkungen
- ST-USG-017 – Ungültiger Parametermodifizierer
- ST-USG-020 – Minimale Protokollmeldungen
- ST-USG-024 – Nicht verwendet, gespeichert für später
- ST-USG-025 – Missbrauch gespeicherter Werte
- ST-USG-026 – Aktivitätseinschränkungen
- ST-USG-027 – Erforderliche Pakete
- ST-USG-028 – Aufruf von Dateivorlagen einschränken
- ST-USG-032 – Erforderliche Tags
- ST-USG-034 – Automation Hub-URL
- Variablen
- Argumente
- Importierte Namespaces
- Codierte Automatisierungen
- Einleitung
- Registrieren von benutzerdefinierten Diensten
- „Vor“- und „Nach“-Kontexte
- Generieren von Code
- Generieren eines codierten Testfalls aus manuellen Testfällen
- Schreiben von Canvas-freundlichen codierten Workflows
- Integrieren von OpenAI in codierte Workflows
- Beantragen eines Kredits bei der UiBank
- Warteschlangengenerierung mit codierten Workflows und Orchestrator-APIs
- Verwenden importierter Bibliotheksprojekte in codierten Automatisierungen
- Verwenden der zweistufigen Authentifizierung in codierten Automatisierungen
- Herstellen einer Verbindung zu MongoDB Atlas mit codierten Automatisierungen
- Fehlersuche und ‑behebung
- Triggerbasierte Attended-Automatisierung
- Objekt-Repository
- Das Tool ScreenScrapeJavaSupport
- Erweiterungen
- Über Erweiterungen
- SetupExtensions-Tool
- „UiPathRemoteRuntime.exe“ wird nicht in der Remotesitzung ausgeführt.
- UiPath Remote Runtime blockiert das Schließen der Citrix-Sitzung
- UiPath Remote Runtime verursacht Speicherverlust
- Versionen von UiPath.UIAutomation.Activities-Paket und UiPath Remote Runtime stimmen nicht überein
- Die erforderliche UiPath-Erweiterung ist auf der Remotemaschine nicht installiert
- Einstellungen für die Bildschirmauflösung
- Gruppenrichtlinien
- Kommunikation mit Browser nicht möglich
- Die Chrome-Erweiterung wird automatisch entfernt
- Möglicherweise ist die Erweiterung beschädigt
- Überprüfen Sie, ob die Erweiterung für Chrome installiert und aktiviert ist
- Überprüfen Sie, ob ChromeNativeMessaging.exe ausgeführt wird
- Überprüfen der korrekten Definition der ComSpec-Variablen
- Aktivieren Sie den Zugriff auf Datei-URLs und den Inkognito-Modus
- Mehrere Browser-Profile
- Group Policy conflict
- Spezifische bekannte Probleme für MV3-Erweiterungen
- Liste der Erweiterungen für Chrome
- Chrome-Erweiterung für Mac
- Gruppenrichtlinien
- Kommunikation mit Browser nicht möglich
- Die Edge-Erweiterung wird automatisch entfernt
- Möglicherweise ist die Erweiterung beschädigt
- Überprüfen, ob die Erweiterung für Microsoft Edge installiert und aktiviert ist
- Überprüfen Sie, ob ChromeNativeMessaging.exe ausgeführt wird
- Überprüfen der korrekten Definition der ComSpec-Variablen
- Aktivieren des Zugriffs auf Datei-URLs und den InPrivate-Modus
- Mehrere Browser-Profile
- Group Policy conflict
- Spezifische bekannte Probleme für MV3-Erweiterungen
- Liste der Erweiterungen für Edge
- Erweiterung für Safari
- Erweiterung für Amazon WorkSpaces
- SAP Solution Manager-Plugin
- Excel-Add-in
- Studio Testing
- Fehlersuche und ‑behebung
- Informationen zur Fehlerbehebung
- Fehler bei der Assembly-Kompilierung
- Microsoft App-V – Unterstützung und Einschränkungen
- Fehlerbehebung bei Internet Explorer x64
- Probleme in Microsoft Office
- Erkennen von UI-Elementen in PDF mit Zugriffsoptionen.
- Reparieren der Active Accessibility-Unterstützung
- Die Validierung großer Windows-Legacy-Projekte dauert länger als erwartet
Empfehlungen für die Strukturierung codierter Workflows, sodass der Low-Code-Viewer sie als saubere, lesbare Low-Code-Diagramme anzeigt.
Mit einer kleinen Struktur ist ein langer Weg zu einer sauberen Arbeitsfläche. Die folgenden Empfehlungen helfen der Low-Code-Anzeige, Ihren codierten Workflow als lesbare Low-Code-Blöcke anstelle von undurchsichtigen Codeblöcken anzuzeigen. Sie sind nach Auswirkungen geordnet, beginnend mit den Änderungen, die am wichtigsten sind.
UiPath-Dienste über manuell gelaufenen Code
Aufrufe der Dienste des Projekts – system.AddQueueItem(...), excel.ReadRange(...), mail.SendSmtp(...), uiAutomation.Click(...) – werden als Rich-Aktivitätskarten benutzerfreundlich: ein Anzeigename, das Dienstsymbol, bearbeitbare Eigenschaften und eine typisierte Ausgabevariable.
Derselbe Vorgang, der von Grund auf implementiert wurde – mit HttpClient, System.IO oder einer NuGet-Excel-Bibliothek – wird bestenfalls als Assign-Karte mit einem langen Ausdruck und im schlimmsten Fall als Codeblock gerendert. Wenn Sie zuerst nach den Aktivitätspaketen greifen und nur dann auf benutzerdefiniertes C# zurückgreifen, wenn keine Aktivität den Bedarf abdeckt, bleibt mehr vom Workflow sichtbar.
// Renders as a "Write Range" activity card with editable properties:
excel.WriteRange("C:\\out.xlsx", "Sheet1", "A1", table);
// Renders as an opaque code block:
using var writer = new StreamWriter("C:\\out.csv");
// Renders as a "Write Range" activity card with editable properties:
excel.WriteRange("C:\\out.xlsx", "Sheet1", "A1", table);
// Renders as an opaque code block:
using var writer = new StreamWriter("C:\\out.csv");
Die Eingabemethode als Orchestrierungsebene
Die Diagrammansicht zeichnet nur die Eingabemethode ([Workflow] oder Execute). Jeder Aufruf einer Ihrer eigenen Methoden wird zu einem einzigen beschrifteten Block, und seine Auswahl wird in den Helper integriert.
Wenn Sie die Verzweigungen, Schleifen und Fehlerbehandlung auf höchster Ebene in der Eingabemethode beibehalten und detaillierte Schritt-Sequences in gut benannte private Methoden verschieben, wird das Diagramm als sauberer Fluss auf hoher Ebene gelesen – ValidateInvoice → PostToQueue → NotifyFinance – anstelle einer Barriere von Karten auf niedriger Ebene. Jeder Helper erhält auch einen eigenen Abschnitt in der Workflow-Ansicht, sodass nichts ausgeblendet wird. Namen, die die Absicht offenlegen, sind hier doppelt wichtig: Der Methodenname ist die Blockbeschriftung.
Steuerelementfluss als Anweisungen, nicht als Ausdrücke
Die Arbeitsfläche kann nur Verzweigungen und Schleifen erstellen, die auf Anweisungsebene vorhanden sind. Logik, die in Ausdrücken stecken bleibt – Lambdas, linq-Kette (Language Integrated Query), verschachtelte Tesser oder switch -Ausdrücke – wird auf eine einzige Karte komprimiert, was den Zweck des Visualisierungsdrucks zunichte macht.
Die Unterscheidung switch ist erwähnenswert: Eine switch -Anweisung wird vollständig als Switch-Container mit einem Zweig pro Fall gerendert, während das Ausdrucksformular (var label = total switch { ... };) in einer einzigen Assign-Karte komprimiert bleibt. Die Anweisungsform ist die bessere Wahl, wenn die Verzweigung ein Prozessschritt ist, den ein Leser sehen sollte.
// Invisible logic — one code block, the filtering and branching are not drawn:
invoices.Where(i => i.Amount > 1000).ToList().ForEach(i => Approve(i));
// Visible logic — a loop containing a decision containing an Invoke block:
foreach (var invoice in invoices)
{
if (invoice.Amount > 1000)
{
Approve(invoice);
}
}
// Invisible logic — one code block, the filtering and branching are not drawn:
invoices.Where(i => i.Amount > 1000).ToList().ForEach(i => Approve(i));
// Visible logic — a loop containing a decision containing an Invoke block:
foreach (var invoice in invoices)
{
if (invoice.Amount > 1000)
{
Approve(invoice);
}
}
Ein linq-Einzeiler ist noch in Ordnung, wenn es sich um eine einfache Projektion handelt, deren Detail Sie gerne ausblenden möchten (var names = rows.Select(r => r.Name).ToList(); wird als eine Zuweisen-Karte gerendert). Als Fingerregel gilt: Wenn ein Leser des Diagramms die Verzweigung sehen sollte, schreiben Sie sie als if, switch oder foreach.
Renderbare Entsprechungen für Fallback-Konstrukte
Mehrere gängige Konstrukte greifen auf Codeblöcke zurück. Jeder hat ein renderbares Äquivalent, das stattdessen sichtbare Blöcke erzeugt.
| Anstatt | Schreiben | Weil |
|---|---|---|
list.ForEach(x => ...) | foreach (var x in list) | Der Textkörper wird zu sichtbaren Blöcken |
| Lokale Funktionen | Private Methoden | Private Methoden werden als navigierbare Invoke-Blöcke gerendert |
using var handle = excel.UseWorkbook(...); | using (var handle = excel.UseWorkbook(...)) { ... } | Das Blockformular wird als Scope-Frame gerendert und lässt Aufrufe von handle darin als Aktivitäten auflösen |
int a = 1, b = 2; | Eine Deklaration pro Zeile | Jede wird zu einer eigenen Zuweisen-Karte |
string result; … result = ...; später | Eine Deklaration mit einem Initialisierungspunkt bei der ersten Verwendung | Einfache Deklarationen greifen auf Codeblöcke zurück |
Inline-Variablendeklarationen, eine pro Anweisung
Eine Deklaration mit einem Initialifizierer wird als Zuweisen-Karte (oder als Ausgabe einer Aktivitätskarte) gerendert und fügt den Variablenbereich pro Methode hinzu. Eine leere Deklaration wird als Codeblock gerendert. Wenn Sie jede Variable deklarieren, wo ihr Wert zuerst erzeugt wird, bleibt sie sichtbar.
var asset = system.GetAsset("Config"); // activity card, output: asset
int retryCount = 0; // Assign card, typed
var asset = system.GetAsset("Config"); // activity card, output: asset
int retryCount = 0; // Assign card, typed
Explizite Typen, für die der Betrachter sie nicht ableiten kann
Die Arbeitsfläche beschriftet jede Ausgabevariable mit dem besten Typ, den sie finden kann:
- Bei erkannten Aktivitätsaufrufen stammt der Typ automatisch aus den Paketmetadaten.
var asset = system.GetAsset(...)zeigt bereits den echten Rückgabetyp an, sodassvardort nichts kostet. - Für alles andere – einfache Zuweisungen, Aufrufe Ihrer eigenen Methoden und berechnete Ausdrücke – wird
varwörtlich alsvarangezeigt. Ein expliziter Typ bringt den echten Typ auf die Karte und in den Panel Variablen.
var totals = ComputeTotals(rows); // Variables panel shows: totals : var
DataTable totals = ComputeTotals(rows); // Variables panel shows: totals : DataTable
var totals = ComputeTotals(rows); // Variables panel shows: totals : var
DataTable totals = ComputeTotals(rows); // Variables panel shows: totals : DataTable
Kommentare, die die Absicht beschreiben
Ein // -Kommentar, der direkt über einer Aktivität, einem Methodenaufruf, if, foreach, for, switch, try, return oder #region platziert wird, wird an diesen Block angehängt. Es wird zur Beschreibung der Karte in der Diagrammansicht, zum Zeilen-Tooltipp in der Workflowansicht und zum Feld Beschreibung im Eigenschaftenbereich. Aufeinanderfolgende Kommentarzeilen werden verbunden.
// High-value invoices need manual approval before posting
system.AddQueueItem("InvoiceApproval", reference: invoice.Id);
// High-value invoices need manual approval before posting
system.AddQueueItem("InvoiceApproval", reference: invoice.Id);
Kommentare, die sich nicht über einer solchen Anweisung befinden, werden als ihre eigenen kleinen Codezeilen gerendert, sodass ein gezielter Kommentar pro Schritt besser lesbar ist als ein vereinzelter Kommentar.
Prozessphasen gruppiert nach Regionen
#region Name ... #endregion wird in beiden Ansichten als benannte, reduzierbare Gruppe gerendert, und Regionen können verschachtelt werden. Wenn Regionen nach Geschäftsphasen benannt werden – Login, Process invoices, Reporting – liest sich ein reduziertes Diagramm wie eine Prozesszusammenfassung, und das Erweitern einer Region zeigt die Schritte an.
Zugehörige Zuweisungen zusammengefasst
Mindestens zwei aufeinanderfolgende Zuweisungen werden in einer einzigen Mehrfachzuweisungskarte zusammengefasst. Das Initialisieren zusammengehöriger Werte in einer ununterbrochenen Ausführung hält sie auf einer aufgeräumten Karte, anstatt sie über den gesamten Flow zu vereinzeln. Umgekehrt sollte sich eine Zuweisung, die eine eigene Karte sammelt, von anderen Zuweisungen abheben.
Ein Aufruf pro Anweisung
Wenn Aufrufe verkettet sind (row.GetValue("col").ToString().Trim()), kann der Betrachter die Kette nur als einzelne Zeile anzeigen und Ketten auf nicht erkannten Empfängern werden vollständig zurückgesetzt. Wenn Sie eine aussagekräftige Kette in Schritte mit benannten Zwischenvariablen aufteilen, erhält jeder Schritt einen eigenen Block. Bei Handle-APIs wie Excel-Arbeitsmappen und E-Mail-Ordnern kann der Betrachter auch das Handle nachverfolgen, sodass Folgeaufrufe als richtige Aktivitäten dargestellt werden.
Erkennbare Workflow-Aufrufe
workflows.MyOtherWorkflow(arg1, arg2)wird als dedizierte Invoke Workflow-Karte gerendert, wobei jedes Argument durch Richtung (In, Out oder InOut) und Navigation zur Workflow-Datei gekennzeichnet ist.SharedHelpers.Method(...)ruft in eine andere.csDatei des Projekts als navigierbare Invoke-Blöcke auf. Wenn Sie diese als einzigen Aufruf pro Anweisung halten, anstatt als Teil einer längeren Kette, können Sie diese auflösen.
Kurze Checkliste
- Schritte verwenden Aktivitätsdienste (
system.,excel.,mail.und ähnliche), keine manuellen Äquivalente. - Die
[Workflow]-Methode ist kurz und orchestriert gut benannte private Methoden. - Verzweigungen und Schleifen sind Anweisungen (
if,switch,foreach,for,while,try) ohne Logik, die in Lambdas oder linq-Pipelines ausgeblendet ist. - Variablen werden inline, eine pro Anweisung, mit einem Initialisierungsfaktor deklariert.
- Explizite Typen werden verwendet, wenn der Betrachter keinen ableiten kann, z. B. Ergebnisse der Hilfsmethode und berechnete Werte.
- Über jedem wichtigen Schritt befindet sich ein einzeiliger
//-Kommentar. - Prozessphasen sind in
#regioneingebunden. - Jede Anweisung enthält einen Dienst- oder Hilfeaufruf ohne lange Ketten.
- Andere Workflows werden durch
workflows.X(...)aufgerufen. - Auf der Arbeitsfläche bleiben keine grauen Codeblockkarten – jede ist eine Stelle, an der die visuelle Ansicht sehen muss.
Zugehörige Inhalte
- UiPath-Dienste über manuell gelaufenen Code
- Die Eingabemethode als Orchestrierungsebene
- Steuerelementfluss als Anweisungen, nicht als Ausdrücke
- Renderbare Entsprechungen für Fallback-Konstrukte
- Inline-Variablendeklarationen, eine pro Anweisung
- Explizite Typen, für die der Betrachter sie nicht ableiten kann
- Kommentare, die die Absicht beschreiben
- Prozessphasen gruppiert nach Regionen
- Zugehörige Zuweisungen zusammengefasst
- Ein Aufruf pro Anweisung
- Erkennbare Workflow-Aufrufe
- Kurze Checkliste
- Zugehörige Inhalte