@uipath/skills 1.199.0 → 1.200.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CODEOWNERS +14 -8
- package/README.md +18 -3
- package/assets/skill-status.json +9 -1
- package/assets/uip-catalog-snapshot.json +227 -21
- package/package.json +11 -2
- package/scripts/npm-package-lifecycle.mjs +46 -0
- package/skills/uipath-admin/SKILL.md +5 -1
- package/skills/uipath-admin/references/audit-commands.md +1 -1
- package/skills/uipath-admin/references/audit-workflow-guide.md +9 -0
- package/skills/uipath-agents/SKILL.md +2 -2
- package/skills/uipath-agents/references/lowcode/capabilities/context/index.md +7 -0
- package/skills/uipath-agents/references/lowcode/capabilities/integration-service/integration-service.md +5 -6
- package/skills/uipath-agents/references/lowcode/critical-rules/critical-rules.md +1 -1
- package/skills/uipath-agents/references/lowcode/evaluations/evaluation-sets.md +5 -0
- package/skills/uipath-agents/references/lowcode/project-lifecycle.md +3 -3
- package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +3 -2
- package/skills/uipath-api-workflow/SKILL.md +2 -1
- package/skills/uipath-api-workflow/references/cli-reference.md +3 -3
- package/skills/uipath-coded-apps/SKILL.md +3 -2
- package/skills/uipath-coded-apps/assets/fixtures/governance-dashboard-starter-kit.tar.gz +0 -0
- package/skills/uipath-coded-apps/assets/templates/web-app-template.md +1 -1
- package/skills/uipath-coded-apps/references/create-web-app.md +60 -48
- package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +2 -2
- package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +2 -2
- package/skills/uipath-coded-apps/references/dashboards/primitives/tier-resolution.md +16 -16
- package/skills/uipath-coded-apps/references/oauth-scopes.md +28 -272
- package/skills/uipath-coded-apps/references/sdk/action-center.md +26 -243
- package/skills/uipath-coded-apps/references/sdk/agents.md +20 -130
- package/skills/uipath-coded-apps/references/sdk/conversational-agent.md +52 -706
- package/skills/uipath-coded-apps/references/sdk/data-fabric.md +20 -237
- package/skills/uipath-coded-apps/references/sdk/feedback.md +4 -139
- package/skills/uipath-coded-apps/references/sdk/governance-traces.md +7 -55
- package/skills/uipath-coded-apps/references/sdk/governance.md +4 -44
- package/skills/uipath-coded-apps/references/sdk/imports.md +77 -35
- package/skills/uipath-coded-apps/references/sdk/maestro.md +29 -406
- package/skills/uipath-coded-apps/references/sdk/orchestrator.md +30 -324
- package/skills/uipath-coded-apps/references/sdk/pagination.md +9 -67
- package/skills/uipath-coded-apps/references/sdk/traces.md +8 -43
- package/skills/uipath-functions/SKILL.md +23 -23
- package/skills/uipath-governance/SKILL.md +5 -4
- package/skills/uipath-governance/references/cli-cheatsheet.md +2 -1
- package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +143 -58
- package/skills/uipath-governance/references/compliance-pack/restore/impl.md +61 -0
- package/skills/uipath-human-in-the-loop/SKILL.md +4 -2
- package/skills/uipath-insights/SKILL.md +17 -18
- package/skills/uipath-ixp/SKILL.md +12 -7
- package/skills/uipath-ixp/references/cli-reference.md +71 -9
- package/skills/uipath-ixp/references/improve-prompts-guide.md +23 -9
- package/skills/uipath-ixp/references/label-documents-guide.md +33 -5
- package/skills/uipath-maestro-bpmn/SKILL.md +15 -14
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +15 -6
- package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +18 -17
- package/skills/uipath-maestro-case/SKILL.md +46 -33
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +77 -37
- package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +0 -2
- package/skills/uipath-maestro-case/references/bindings-and-expressions.md +3 -1
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +2 -2
- package/skills/uipath-maestro-case/references/brownfield.md +15 -5
- package/skills/uipath-maestro-case/references/case-commands.md +19 -3
- package/skills/uipath-maestro-case/references/case-editing-operations.md +24 -21
- package/skills/uipath-maestro-case/references/case-schema.md +38 -16
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +15 -8
- package/skills/uipath-maestro-case/references/evals/evals.json +35 -18
- package/skills/uipath-maestro-case/references/implementation.md +86 -71
- package/skills/uipath-maestro-case/references/phase-0-interview.md +92 -23
- package/skills/uipath-maestro-case/references/phased-execution.md +70 -55
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +5 -5
- package/skills/uipath-maestro-case/references/planning.md +57 -9
- package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +7 -5
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +5 -5
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +41 -5
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +27 -3
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +6 -6
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +20 -7
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +37 -4
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +24 -13
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +9 -3
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +4 -0
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +4 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +4 -0
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +17 -14
- package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +13 -10
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +18 -16
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +2 -2
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +11 -9
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +6 -2
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +19 -1
- package/skills/uipath-maestro-case/references/registry-discovery.md +3 -3
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +155 -51
- package/skills/uipath-maestro-case/references/sla-response-shapes.md +74 -0
- package/skills/uipath-maestro-flow/SKILL.md +4 -3
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +3 -0
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +10 -17
- package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +8 -6
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +4 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/agentic-process/impl.md +3 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/api-workflow/impl.md +5 -8
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +11 -4
- package/skills/uipath-maestro-flow/references/author/references/plugins/flow/impl.md +3 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +14 -17
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +60 -13
- package/skills/uipath-maestro-flow/references/author/references/plugins/queue/impl.md +2 -14
- package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +4 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +3 -0
- package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +5 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +13 -0
- package/skills/uipath-maestro-flow/references/shared/action-nodes.md +2 -2
- package/skills/uipath-maestro-flow/references/shared/file-format.md +16 -12
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +3 -3
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-planner/references/non-pdd-lane-guide.md +1 -1
- package/skills/uipath-platform/SKILL.md +1 -1
- package/skills/uipath-platform/references/data-fabric/bulk-import.md +10 -27
- package/skills/uipath-platform/references/data-fabric/choice-sets.md +7 -64
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +76 -267
- package/skills/uipath-platform/references/data-fabric/entity-schema.md +23 -99
- package/skills/uipath-platform/references/data-fabric/file-attachments.md +5 -28
- package/skills/uipath-platform/references/data-fabric/filter-platform-contract.md +2 -2
- package/skills/uipath-platform/references/data-fabric/records-query.md +11 -32
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +6 -2
- package/skills/uipath-platform/references/licensing/consumables-report.md +18 -0
- package/skills/uipath-platform/references/licensing/licensing.md +1 -1
- package/skills/uipath-platform/references/orchestrator/run-jobs.md +9 -2
- package/skills/uipath-platform/references/orchestrator/setup-environment.md +9 -0
- package/skills/uipath-platform/references/traces/feedback.md +4 -1
- package/skills/uipath-process-mining/SKILL.md +97 -0
- package/skills/uipath-process-mining/references/app-types.md +66 -0
- package/skills/uipath-process-mining/references/data-model.md +130 -0
- package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +67 -0
- package/skills/uipath-process-mining/references/model-editing.md +112 -0
- package/skills/uipath-process-mining/references/pre-flight.md +119 -0
- package/skills/uipath-process-mining/references/querying.md +66 -0
- package/skills/uipath-process-mining/references/transformations.md +80 -0
- package/skills/uipath-process-mining/references/uip-pm-cli.md +145 -0
- package/skills/uipath-review/SKILL.md +23 -18
- package/skills/uipath-review/references/agents/agent-grading-rubric.md +1 -1
- package/skills/uipath-review/references/agents/agent-review-checklist.md +0 -4
- package/skills/uipath-review/references/agents/agents-coded-rules.md +1 -10
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +3 -6
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +62 -14
- package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +60 -4
- package/skills/uipath-review/references/review-workflow-guide.md +3 -2
- package/skills/uipath-review/references/rule-catalog-workflow.md +4 -5
- package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +20 -0
- package/skills/uipath-rpa/SKILL.md +57 -55
- package/skills/uipath-rpa/agents/uipath-project-discovery-agent.md +75 -19
- package/skills/uipath-rpa/assets/codedworkflow-template.md +245 -11
- package/skills/uipath-rpa/references/cli-reference.md +229 -6
- package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +158 -2
- package/skills/uipath-rpa/references/coded/integration-service-guide.md +6 -5
- package/skills/uipath-rpa/references/coded/operations-guide.md +273 -5
- package/skills/uipath-rpa/references/coded-vs-xaml-guide.md +3 -3
- package/skills/uipath-rpa/references/common-pattern-card.md +303 -0
- package/skills/uipath-rpa/references/data-manipulation-guide.md +18 -3
- package/skills/uipath-rpa/references/debugging.md +0 -2
- package/skills/uipath-rpa/references/environment-setup.md +309 -1
- package/skills/uipath-rpa/references/error-handling-guide.md +1 -1
- package/skills/uipath-rpa/references/execution-maps-guide.md +110 -0
- package/skills/uipath-rpa/references/is-connector-xaml-guide.md +58 -4
- package/skills/uipath-rpa/references/legacy/activity-docs/Excel.md +1 -1
- package/skills/uipath-rpa/references/legacy/activity-docs/_DU-PROCESS.md +0 -2
- package/skills/uipath-rpa/references/legacy/activity-docs/_INDEX.md +2 -2
- package/skills/uipath-rpa/references/legacy/activity-docs/_PATTERNS.md +1 -1
- package/skills/uipath-rpa/references/legacy/activity-docs/_REFRAMEWORK.md +2 -7
- package/skills/uipath-rpa/references/legacy/cli-reference.md +599 -0
- package/skills/uipath-rpa/references/legacy/error-handling-guide.md +2 -2
- package/skills/uipath-rpa/references/legacy/legacy-mode-guide.md +16 -16
- package/skills/uipath-rpa/references/legacy/project-organization-guide.md +2 -2
- package/skills/uipath-rpa/references/legacy/selector-guide.md +163 -1
- package/skills/uipath-rpa/references/legacy/testing-guide.md +246 -3
- package/skills/uipath-rpa/references/legacy/xaml-basics-and-rules.md +267 -2
- package/skills/uipath-rpa/references/library-authoring-guide.md +4 -3
- package/skills/uipath-rpa/references/testing-guide.md +2 -28
- package/skills/uipath-rpa/references/trigger-pattern-guide.md +1 -1
- package/skills/uipath-rpa/references/xaml/canvas-layout-guide.md +140 -33
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +57 -240
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +42 -2
- package/skills/uipath-rpa/references/xaml/long-running-workflow-guide.md +1 -1
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +194 -228
- package/skills/uipath-solution/references/activate-and-manage.md +22 -0
- package/skills/uipath-solution/references/develop-solution.md +26 -2
- package/skills/uipath-solution/references/pack-and-deploy.md +43 -9
- package/skills/uipath-test/SKILL.md +4 -4
- package/skills/uipath-test/references/playwright-first-mile-guide.md +5 -4
- package/skills/uipath-test/references/publish-and-link-guide.md +2 -2
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/click-silent-no-op.md +5 -5
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/queue-operation-failed.md +20 -4
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/summary.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/csv-activities/playbooks/read-csv-file-not-found.md +12 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/send-outlook-mail-failures.md +12 -1
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/terminal-activities/playbooks/terminal-session-connection-failed.md +5 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-silent-no-op.md +5 -5
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/dependency-version-conflict.md +27 -6
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/napplicationcard-view-generation-failed.md +10 -0
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/scope-container-wrong-page.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/summary.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/overview.md +4 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-auth-401-403.md +44 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-connection-failure.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-content-type-rejected.md +37 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-proxy-blocked.md +39 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/package-version-mismatch.md +42 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/securestring-misuse-analyzer.md +41 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/summary.md +5 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-null-reference.md +14 -1
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-runtime-exception.md +2 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/is-activities-prerelease-not-found.md +39 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-content-too-large.md +41 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +9 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/console-conflict-login-to-console.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/credential-store-unavailable.md +42 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/executor-start-transient-rerun.md +49 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-consecutive-system-exceptions.md +47 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-faulted-session-timeout.md +19 -19
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-output-too-large.md +47 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-stopped-generic-exit-code.md +55 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/known-issue-robot-defect.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/platform-incident-correlation.md +45 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/screen-capture-handle-invalid.md +43 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-license-quota.md +43 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-time-limit-exceeded.md +34 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/workstation-in-use-machine-slots.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/summary.md +13 -1
- package/version-manifest.json +2 -2
- package/skills/uipath-maestro-bpmn/validator/README.md +0 -224
- package/skills/uipath-maestro-bpmn/validator/model.mjs +0 -419
- package/skills/uipath-maestro-bpmn/validator/package.json +0 -17
- package/skills/uipath-maestro-bpmn/validator/rules.mjs +0 -1403
- package/skills/uipath-maestro-bpmn/validator/samples/invalid-conditional-and-variable.bpmn +0 -25
- package/skills/uipath-maestro-bpmn/validator/samples/valid-baseline.bpmn +0 -52
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.0.bpmn +0 -157
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.1.bpmn +0 -333
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.1.0.bpmn +0 -598
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.2.0.bpmn +0 -1709
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.2.0.bpmn +0 -564
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.3.0.bpmn +0 -671
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.4.0.bpmn +0 -1045
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.5.0.bpmn +0 -1176
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.6.0.bpmn +0 -670
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.7.0.bpmn +0 -466
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Can_Parse_Complex_Process_With_Task_Gateway_BoundaryEvent_etc.bpmn +0 -74
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExclusiveGatewayDefaultFlow.bpmn +0 -32
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExternalAgentWorkflow.bpmn +0 -62
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Golden_Scenario.initial.bpmn +0 -361
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/InclusiveJoinRouteAwayBranch.bpmn +0 -62
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_AsyncExecution_And_Create_CorrectModel.bpmn +0 -74
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_ExtractionValidation_And_Create_CorrectModel.bpmn +0 -35
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_FileUpload_And_Create_CorrectModel.bpmn +0 -33
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_JobAttachment_And_Create_CorrectModel.bpmn +0 -35
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_SubProcess_With_Multiple_Element_Types.bpmn +0 -76
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartEventWithOutputs.bpmn +0 -36
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartGatewayEnd.bpmn +0 -44
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all elements.bpmn +0 -516
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all_sequence_flow_types.bpmn +0 -173
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/demo.bpmn +0 -181
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-collapsed.bpmn +0 -126
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-expanded.bpmn +0 -122
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-003-collapsed_deeply-nested.bpmn +0 -438
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.1.0.bpmn +0 -87
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.3.0.bpmn +0 -165
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ApiWorkflow.bpmn +0 -39
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnNestedSubProcessTests.bpmn +0 -102
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnTimerBoundaryEvents.bpmn +0 -160
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithCatchAllErrorEventSubProcess.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithSpecificErrorEventSubProcess.bpmn +0 -46
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/CaseManagementWithConstantIdentifier.bpmn +0 -218
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorBoundary.bpmn +0 -78
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorPropagationInEventSubprocess.bpmn +0 -340
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/EventBasedGatewayFirstCatcherWins.bpmn +0 -56
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Example-EventBasedGateway.bpmn +0 -117
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewayConditional.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewaySharedEndEvent.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveWithParallelGateway.bpmn +0 -68
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/FourScriptTasks.bpmn +0 -84
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/HitlTaskOnly.bpmn +0 -55
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/InclusiveGatewayForkJoin.bpmn +0 -69
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_BPMN_Elements_And_Create_CorrectModel.bpmn +0 -20
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_HttpRequest_ServiceTask_And_Create_Correct_Model.bpmn +0 -34
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_MessageBoundaryEvent_And_Create_CorrectModel.bpmn +0 -87
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Script_Task_V2_And_Create_Correct_Model.bpmn +0 -31
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Sets_Containers_Properly.bpmn +0 -129
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ScriptWritesVariableThenGatewayBranches.bpmn +0 -59
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/boundaryevent.bpmn +0 -30
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/collapsed-subprocess.bpmn +0 -83
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/connectable-types.bpmn +0 -85
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/extensions-orchestrator-start-job.bpmn +0 -80
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/multiparticipantpool.bpmn +0 -77
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/nestedsubprocess.bpmn +0 -36
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/simple.bpmn +0 -59
- package/skills/uipath-maestro-bpmn/validator/test/integration.test.mjs +0 -146
- package/skills/uipath-maestro-bpmn/validator/test/model-helpers.mjs +0 -42
- package/skills/uipath-maestro-bpmn/validator/test/ported-rule-tests.mjs +0 -983
- package/skills/uipath-maestro-bpmn/validator/test/run-tests.mjs +0 -530
- package/skills/uipath-maestro-bpmn/validator/uipath-moddle.v1.json +0 -715
- package/skills/uipath-maestro-bpmn/validator/validate-bpmn.mjs +0 -164
- package/skills/uipath-review/references/agents/agents-common-rules.md +0 -32
- package/skills/uipath-rpa/assets/before-after-hooks-template.md +0 -115
- package/skills/uipath-rpa/assets/helper-utility-template.md +0 -22
- package/skills/uipath-rpa/assets/testcase-template.md +0 -92
- package/skills/uipath-rpa/references/coded/coding-guidelines.md +0 -255
- package/skills/uipath-rpa/references/coded/inspect-package-guide.md +0 -80
- package/skills/uipath-rpa/references/coded/third-party-packages-guide.md +0 -67
- package/skills/uipath-rpa/references/connector-capabilities.md +0 -79
- package/skills/uipath-rpa/references/legacy/activity-docs/Testing.md +0 -95
- package/skills/uipath-rpa/references/legacy/activity-docs/UIAutomation.md +0 -159
- package/skills/uipath-rpa/references/legacy/common-pitfalls.md +0 -318
- package/skills/uipath-rpa/references/legacy/discovery-workflow.md +0 -147
- package/skills/uipath-rpa/references/legacy/environment-setup.md +0 -78
- package/skills/uipath-rpa/references/legacy/project-structure.md +0 -206
- package/skills/uipath-rpa/references/legacy/test-data-guide.md +0 -142
- package/skills/uipath-rpa/references/legacy/validation-and-fixing.md +0 -154
- package/skills/uipath-rpa/references/project-structure-guide.md +0 -168
- package/skills/uipath-rpa/references/project-structure.md +0 -135
- package/skills/uipath-rpa/references/publishing-guide.md +0 -80
- package/skills/uipath-rpa/references/validation-guide.md +0 -170
- package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +0 -43
- package/skills/uipath-rpa/references/xaml/flowchart-guide.md +0 -113
- package/skills/uipath-rpa/references/xaml/workflow-guide.md +0 -258
|
@@ -149,7 +149,7 @@ VB.NET expressions use bracket notation `[expression]` inline in attributes:
|
|
|
149
149
|
|
|
150
150
|
**XML escaping required inside expressions:** `<` → `<`, `>` → `>`, `"` → `"`, `&` → `&`
|
|
151
151
|
|
|
152
|
-
**Throw.Exception quote escaping gotcha:** Fully-qualified class names + complex string expressions with multiple `"` in `Throw.Exception` can cause compiler errors. Use short-form class names (`BusinessRuleException` not `UiPath.Core.Activities.BusinessRuleException`) and for complex messages, assign to a variable first then throw with the variable. See [
|
|
152
|
+
**Throw.Exception quote escaping gotcha:** Fully-qualified class names + complex string expressions with multiple `"` in `Throw.Exception` can cause compiler errors. Use short-form class names (`BusinessRuleException` not `UiPath.Core.Activities.BusinessRuleException`) and for complex messages, assign to a variable first then throw with the variable. See [§ VB.NET Quote Escaping in Throw.Exception](#vbnet-quote-escaping-in-throwexception-critical-for-xaml-generation) for the full pattern.
|
|
153
153
|
|
|
154
154
|
For comprehensive VB.NET expression patterns (strings, dates, collections, DataTables), see [activity-docs/_PATTERNS.md](./activity-docs/_PATTERNS.md).
|
|
155
155
|
|
|
@@ -454,4 +454,269 @@ xmlns:ucsvact="clr-namespace:UiPath.CSV.Activities;assembly=UiPath.Excel.Activit
|
|
|
454
454
|
7. **Never add trailing `<x:Reference>` for Flowchart child nodes** — FlowStep/FlowDecision/FlowSwitch nodes defined inline as direct children of `<Flowchart>` must NOT be re-listed with `<x:Reference>` at the end. Only use `<x:Reference>` inside property elements (`Flowchart.StartNode`, `FlowStep.Next`, `FlowDecision.True/False`, etc.) to create cross-references
|
|
455
455
|
8. **State Machine needs exactly one `IsFinal="True"` state** for proper termination
|
|
456
456
|
9. **Legacy uses `assembly=mscorlib`** — not `assembly=System.Private.CoreLib` (which is .NET 6+)
|
|
457
|
-
10. **Scope activities require `ActivityAction<T>` body** — `ExcelApplicationScope`, `ExcelProcessScopeX`, `ExcelApplicationCard`, `WordApplicationScope`, etc. do NOT accept direct children. They require a `.Body` property with `ActivityAction<T>` and `DelegateInArgument`. See [
|
|
457
|
+
10. **Scope activities require `ActivityAction<T>` body** — `ExcelApplicationScope`, `ExcelProcessScopeX`, `ExcelApplicationCard`, `WordApplicationScope`, etc. do NOT accept direct children. They require a `.Body` property with `ActivityAction<T>` and `DelegateInArgument`. See [§ Scope Activities Require ActivityAction Body](#scope-activities-require-activityaction-body-critical-for-xaml-generation) for the complete template.
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## Common Pitfalls & Quick Reference
|
|
462
|
+
|
|
463
|
+
Essential gotchas, required scopes, and VB.NET patterns for legacy UiPath RPA workflows.
|
|
464
|
+
|
|
465
|
+
For the complete gotchas list, see [activity-docs/_COMMON-PITFALLS.md](./activity-docs/_COMMON-PITFALLS.md).
|
|
466
|
+
For the complete VB.NET cheat sheet, see [activity-docs/_PATTERNS.md](./activity-docs/_PATTERNS.md).
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
### Flowcharts/StateMachines Without ViewState
|
|
471
|
+
|
|
472
|
+
**Severity: HIGH.** Missing ViewState causes Studio to stack all nodes at (0,0) — unusable. Every Flowchart/StateMachine node needs `ShapeLocation` + `ShapeSize`. **Required xmlns:** `xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"`
|
|
473
|
+
|
|
474
|
+
See [activity-docs/_XAML-GUIDE.md](./activity-docs/_XAML-GUIDE.md) for coordinate systems, standard sizes, layout algorithms, connector formulas, and complete examples.
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
### Required Parent Scopes
|
|
479
|
+
|
|
480
|
+
These classic activities **must** be placed inside a specific parent scope:
|
|
481
|
+
|
|
482
|
+
| Activities | Required Parent Scope |
|
|
483
|
+
|-----------|----------------------|
|
|
484
|
+
| Excel Interop (ExcelReadRange, ExcelWriteCell, etc.) | `Excel Application Scope` |
|
|
485
|
+
| Excel Modern (ReadRangeX, WriteRangeX, etc.) | `ExcelApplicationCard` inside `ExcelProcessScopeX` |
|
|
486
|
+
| PowerPoint Interop (InsertSlide, InsertText, etc.) | `PowerPoint Application Scope` |
|
|
487
|
+
| Word Interop (AppendText, ReplaceText, etc.) | `Word Application Scope` |
|
|
488
|
+
| FTP activities (Download, Upload, Delete, etc.) | `FTP Session` (WithFtpSession) |
|
|
489
|
+
| Java activities (InvokeJavaMethod, LoadJar, etc.) | `Java Scope` |
|
|
490
|
+
| Python activities (RunScript, InvokeMethod, etc.) | `Python Scope` |
|
|
491
|
+
| Terminal activities (GetField, SetField, SendKeys, etc.) | `Terminal Session` |
|
|
492
|
+
| Office 365 activities (SendMail, CreateEvent, etc.) | `Microsoft Office 365 Scope` |
|
|
493
|
+
| SAP BAPI activities (InvokeSapBapi) | `SAP Application Scope` |
|
|
494
|
+
| SharePoint activities (GetListItems, UploadFile, etc.) | `SharePoint Application Scope` |
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
### Scope Activities Require ActivityAction Body (CRITICAL for XAML Generation)
|
|
499
|
+
|
|
500
|
+
Scope activities (Excel Application Scope, ExcelProcessScopeX, ExcelApplicationCard, Word Application Scope, etc.) do **NOT** accept direct children. They require an `ActivityAction<T>` body wrapper with a `DelegateInArgument`. `RetryScope` follows the same wrap-the-body rule but uses a bare `ActivityAction` (no `x:TypeArguments`, no `DelegateInArgument`) — see the per-activity table below. Placing activities directly inside the scope element will fail validation.
|
|
501
|
+
|
|
502
|
+
**Wrong — direct children (fails validation):**
|
|
503
|
+
```xml
|
|
504
|
+
<ueab:ExcelApplicationCard WorkbookPath="file.xlsx">
|
|
505
|
+
<ueab:ReadRangeX ... /> <!-- WRONG -->
|
|
506
|
+
</ueab:ExcelApplicationCard>
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Correct — ActivityAction body wrapper:**
|
|
510
|
+
```xml
|
|
511
|
+
<ueab:ExcelApplicationCard WorkbookPath="file.xlsx" DisplayName="Use Excel File">
|
|
512
|
+
<ueab:ExcelApplicationCard.Body>
|
|
513
|
+
<ActivityAction x:TypeArguments="ue:IWorkbookQuickHandle">
|
|
514
|
+
<ActivityAction.Argument>
|
|
515
|
+
<DelegateInArgument x:TypeArguments="ue:IWorkbookQuickHandle" Name="Excel" />
|
|
516
|
+
</ActivityAction.Argument>
|
|
517
|
+
<Sequence DisplayName="Do">
|
|
518
|
+
<!-- Child activities go here, using Excel handle -->
|
|
519
|
+
<ueab:ReadRangeX Range="[Excel.Sheet("Sheet1").Range("A1:A20")]" />
|
|
520
|
+
</Sequence>
|
|
521
|
+
</ActivityAction>
|
|
522
|
+
</ueab:ExcelApplicationCard.Body>
|
|
523
|
+
</ueab:ExcelApplicationCard>
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
#### Common Scope Body Patterns
|
|
527
|
+
|
|
528
|
+
| Activity | Body TypeArgument | DelegateInArgument Name | Notes |
|
|
529
|
+
|----------|-------------------|------------------------|-------|
|
|
530
|
+
| `ExcelProcessScopeX` | `ui:IExcelProcess` | `ExcelProcessScopeTag` | Outer Excel scope |
|
|
531
|
+
| `ExcelApplicationCard` | `ue:IWorkbookQuickHandle` | `Excel` | Inner Excel scope (inside ExcelProcessScopeX) |
|
|
532
|
+
| `ExcelApplicationScope` | `ue:WorkbookApplication` | `ExcelWorkbookScope` | Classic Interop scope |
|
|
533
|
+
| `ForEachRow` | `ActivityAction(sd:DataRow)` | `row` | Iterates DataTable rows |
|
|
534
|
+
| `WordApplicationScope` | (Word handle type) | `WordApplicationScope` | Word COM scope |
|
|
535
|
+
| `PowerPointApplicationScope` | (PowerPoint handle type) | `PowerPointApplication` | PowerPoint COM scope |
|
|
536
|
+
| `TryCatch` | (special — `Catches` collection) | — | Not ActivityAction, but has nested body structure |
|
|
537
|
+
| `Parallel` | (multiple `Branches`) | — | Each branch is a separate Sequence |
|
|
538
|
+
| `RetryScope` | _(none — bare `<ActivityAction>`)_ | — | Body property is `.ActivityBody` (not `.Body`); `ActivityAction` takes no type argument or `DelegateInArgument` |
|
|
539
|
+
|
|
540
|
+
**`find-activities` now returns `Body` info** when an activity requires an `ActivityAction<T>` body — check the output before writing XAML for scope activities.
|
|
541
|
+
|
|
542
|
+
**Key xmlns required:**
|
|
543
|
+
- `xmlns:ue="clr-namespace:UiPath.Excel;assembly=UiPath.Excel.Activities"`
|
|
544
|
+
- `xmlns:ueab="clr-namespace:UiPath.Excel.Activities.Business;assembly=UiPath.Excel.Activities"`
|
|
545
|
+
- `xmlns:ui="http://schemas.uipath.com/workflow/activities"`
|
|
546
|
+
- `xmlns:sd="clr-namespace:System.Data;assembly=System.Data"` (for ForEachRow DataRow type)
|
|
547
|
+
|
|
548
|
+
**Nested scopes:** Modern Excel requires TWO levels: `ExcelProcessScopeX` → `ExcelApplicationCard` → activities. Each level has its own `ActivityAction` body.
|
|
549
|
+
|
|
550
|
+
**Always check `find-activities` output** for body pattern info before using scope activities.
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
### Dangerous Defaults (Source Code Verified)
|
|
555
|
+
|
|
556
|
+
#### ContinueOnError Defaults to TRUE
|
|
557
|
+
These activities **silently swallow all errors** by default:
|
|
558
|
+
|
|
559
|
+
| Activity | Package | Impact |
|
|
560
|
+
|----------|---------|--------|
|
|
561
|
+
| `NetHttpRequest` / `HttpClient` (HTTP Request) | Web | HTTP 500/timeout → empty response, no error |
|
|
562
|
+
| `Data Scraping` wizard output | UIAutomation | Extraction failure → empty DataTable |
|
|
563
|
+
|
|
564
|
+
**Always** set `ContinueOnError=False` on HTTP Request activities.
|
|
565
|
+
|
|
566
|
+
#### ContinueOnError in Library Workflows
|
|
567
|
+
**NEVER** use `ContinueOnError=True` in Library workflows. Library consumers cannot know which errors are silently swallowed. Always let exceptions propagate from libraries — the consuming process decides how to handle them.
|
|
568
|
+
|
|
569
|
+
#### Excel AutoSave Causes Performance Disasters
|
|
570
|
+
`AutoSave=true` (default) on `ExcelApplicationScope` means every Write Cell triggers a disk write. In loops with 1000 operations, that's 1000 saves.
|
|
571
|
+
|
|
572
|
+
**Fix:** Set `AutoSave=false`, add a single `Save Workbook` at the end.
|
|
573
|
+
|
|
574
|
+
#### OpenBrowser Defaults to Internet Explorer
|
|
575
|
+
`BrowserType` defaults to `IE` in source code. **Always explicitly set** BrowserType to Chrome, Firefox, or Edge.
|
|
576
|
+
|
|
577
|
+
#### HTTP Request Very Short Timeout
|
|
578
|
+
Legacy `HttpClient` (also called `NetHttpRequest` internally) timeout is only 6,000-10,000ms. Both are often too low for production APIs.
|
|
579
|
+
|
|
580
|
+
**Fix:** Set `TimeoutMS` to 30,000-60,000ms.
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
### VB.NET Quote Escaping in Throw.Exception (CRITICAL for XAML Generation)
|
|
585
|
+
|
|
586
|
+
The `Throw.Exception` attribute wraps the bracket expression in `VisualBasicValue<Exception>`. When fully-qualified class names are combined with complex string expressions containing multiple `"`, the VB.NET compiler can reject the expression — even though the same `"` escaping works fine in simpler attributes like `LogMessage.Message`.
|
|
587
|
+
|
|
588
|
+
#### What fails
|
|
589
|
+
|
|
590
|
+
```xml
|
|
591
|
+
<!-- FAILS: Fully-qualified name + complex string concatenation -->
|
|
592
|
+
<Throw Exception="[New UiPath.Core.Activities.BusinessRuleException("Invalid amount: " & amount.ToString("F2") & " for " & txId)]" />
|
|
593
|
+
|
|
594
|
+
<!-- FAILS: String.Format with multiple " inside brackets -->
|
|
595
|
+
<Throw Exception="[New UiPath.Core.Activities.BusinessRuleException(String.Format("Invalid amount: {0} for {1}", amount, txId))]" />
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### What works
|
|
599
|
+
|
|
600
|
+
**Approach 1: Short-form class name + simple expression (recommended for simple messages)**
|
|
601
|
+
```xml
|
|
602
|
+
<!-- Works: Short name (namespace already imported) + simple concatenation -->
|
|
603
|
+
<Throw Exception="[New BusinessRuleException("Invalid amount for " & txId)]" />
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
**Approach 2: Variable for message, then Throw (recommended for complex messages)**
|
|
607
|
+
```xml
|
|
608
|
+
<!-- Best practice from codebase: construct message in a variable, then throw -->
|
|
609
|
+
<Assign DisplayName="Build Error Message">
|
|
610
|
+
<Assign.To>
|
|
611
|
+
<OutArgument x:TypeArguments="x:String">[errorMessage]</OutArgument>
|
|
612
|
+
</Assign.To>
|
|
613
|
+
<Assign.Value>
|
|
614
|
+
<InArgument x:TypeArguments="x:String">["Invalid amount: " & amount.ToString("F2") & " for transaction " & txId]</InArgument>
|
|
615
|
+
</Assign.Value>
|
|
616
|
+
</Assign>
|
|
617
|
+
<Throw Exception="[New BusinessRuleException(errorMessage)]" />
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
#### Rules
|
|
621
|
+
|
|
622
|
+
1. **Always use short-form class names** in `Throw.Exception` — `BusinessRuleException` not `UiPath.Core.Activities.BusinessRuleException`. Ensure `UiPath.Core.Activities` is in the namespace imports.
|
|
623
|
+
2. **For complex messages, use the variable approach** — Assign the message string to a variable first, then pass the variable to the exception constructor.
|
|
624
|
+
3. **For simple messages, inline is fine** — `[New BusinessRuleException("simple message")]` works.
|
|
625
|
+
4. **Same rules apply to all exception types** — `Exception`, `BusinessRuleException`, `ArgumentException`, etc.
|
|
626
|
+
|
|
627
|
+
#### Why this happens
|
|
628
|
+
|
|
629
|
+
`Throw.Exception` compiles the bracket expression via `VisualBasicValue<Exception>`. The combination of a long fully-qualified type path + embedded `"` string literals with concatenation operators creates ambiguity for the VB.NET expression compiler. Shorter expressions or variable references avoid this.
|
|
630
|
+
|
|
631
|
+
---
|
|
632
|
+
|
|
633
|
+
### Top Gotchas by Package
|
|
634
|
+
|
|
635
|
+
#### Excel
|
|
636
|
+
- **Zombie EXCEL.EXE processes** after workflow crashes — use Kill Process in Finally block
|
|
637
|
+
- **Dates read as serial numbers** — set `PreserveFormat=true` or convert with `DateTime.FromOADate()`
|
|
638
|
+
- **Empty DataTable from Read Range** — verify sheet name, use `""` for entire used range
|
|
639
|
+
- **Write Range strips formatting** — use Write Cell in loops for small updates
|
|
640
|
+
|
|
641
|
+
#### UIAutomation
|
|
642
|
+
- **TypeInto missing/wrong characters** — escape `{`, `}`, `[`, `]`, `+`, `^`, `%`, `~` with `{{}`, `{+}` etc.
|
|
643
|
+
- **EmptyField ignored with SimulateType** — only works with hardware events or SendWindowMessages
|
|
644
|
+
- **Selectors work in Studio, fail on Robot** — use SimulateClick/SimulateType, avoid `idx` attribute
|
|
645
|
+
- **Dynamic selectors break** — use wildcards `*` for dynamic parts, prefer `AutomationId`
|
|
646
|
+
|
|
647
|
+
#### Mail
|
|
648
|
+
- **SMTP auth fails with Gmail/M365** — use App Passwords or OAuth2, not "Less Secure Apps"
|
|
649
|
+
- **SSL/TLS port mismatch** — Port 587 = STARTTLS, Port 465 = implicit SSL, Port 25 = unencrypted
|
|
650
|
+
- **Multiple recipients** — use semicolons `;` not commas
|
|
651
|
+
|
|
652
|
+
#### Web
|
|
653
|
+
- **HTTP Request ContinueOnError=TRUE by default** — errors silently swallowed
|
|
654
|
+
- **Legacy HttpClient 6-second timeout** — increase to 30-60 seconds
|
|
655
|
+
|
|
656
|
+
#### PDF
|
|
657
|
+
- **ReadPDFText returns empty** — PDF is scanned images, use Read PDF With OCR instead
|
|
658
|
+
- **Text out of order** — set `PreserveFormatting=true`
|
|
659
|
+
|
|
660
|
+
#### GenericValue
|
|
661
|
+
- **String comparison instead of numeric** — `"10" > "9"` returns False. Use `CInt()` explicitly.
|
|
662
|
+
- **Boolean conversion trap** — ANY non-null, non-empty string converts to `True`
|
|
663
|
+
- **Null converts to 0** — `GenericValue(null)` → int returns `0`, → DateTime returns `DateTime.MinValue`
|
|
664
|
+
|
|
665
|
+
**Recommendation:** Avoid GenericValue entirely. Use strongly-typed variables.
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
### VB.NET Quick Reference
|
|
670
|
+
|
|
671
|
+
Complete VB.NET cheat sheet — string/type/DateTime/collection/DataTable operations, file paths, Orchestrator patterns: [activity-docs/_PATTERNS.md](./activity-docs/_PATTERNS.md).
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
### Common XAML Generation Mistakes
|
|
676
|
+
|
|
677
|
+
These are patterns the agent is likely to produce incorrectly. Check for them after generating XAML.
|
|
678
|
+
|
|
679
|
+
#### Hallucination-Prone Activity Names
|
|
680
|
+
|
|
681
|
+
| Wrong (invented) | Correct | Package |
|
|
682
|
+
|---|---|---|
|
|
683
|
+
| `ReadExcel`, `WriteExcel` | `ExcelReadRange`, `ExcelWriteRange` | Excel |
|
|
684
|
+
| `SendEmail` | `SendSmtpMailMessage`, `SendOutlookMailMessage` | Mail |
|
|
685
|
+
| `OpenBrowserActivity` | `OpenBrowser` | UIAutomation |
|
|
686
|
+
| `ReadPdf` | `ReadPDFText`, `ReadPDFWithOCR` | PDF |
|
|
687
|
+
| `HttpRequest` | `HttpClient` (also known as `NetHttpRequest`) | Web |
|
|
688
|
+
|
|
689
|
+
**Rule:** NEVER guess activity names. Run `find-activities` to get the exact class name.
|
|
690
|
+
|
|
691
|
+
#### Nesting Errors
|
|
692
|
+
|
|
693
|
+
| Mistake | Fix |
|
|
694
|
+
|---|---|
|
|
695
|
+
| Multiple children directly inside `If.Then` or `If.Else` | Wrap in a single `Sequence` |
|
|
696
|
+
| Activities directly inside `ForEach` body | Use `ActivityAction` wrapper (see Scope Activities section above) |
|
|
697
|
+
| Activities directly inside scope activities (Excel, Word, etc.) | Use `ActivityAction<T>` body pattern |
|
|
698
|
+
| ViewState referencing nodes that don't exist in the workflow | Remove orphaned ViewState entries, or add the missing nodes |
|
|
699
|
+
|
|
700
|
+
#### Expression Language Mismatches
|
|
701
|
+
|
|
702
|
+
| Mistake | Symptom | Fix |
|
|
703
|
+
|---|---|---|
|
|
704
|
+
| C# operators (`!=`, `&&`, `\|\|`) in VB.NET project | Compilation error | Use `<>`, `AndAlso`, `OrElse` |
|
|
705
|
+
| C# string interpolation `$"..."` in VB.NET project | Compilation error | Use `String.Format` or `&` concatenation |
|
|
706
|
+
| VB.NET `[bracket]` expressions in C# project | Compilation error | Use `<mca:CSharpValue>` or `<mca:CSharpReference>` |
|
|
707
|
+
|
|
708
|
+
#### Security Anti-Patterns
|
|
709
|
+
|
|
710
|
+
| Anti-Pattern | Risk | Fix |
|
|
711
|
+
|---|---|---|
|
|
712
|
+
| Password stored in `String` variable | Visible in logs and memory dumps | Use `SecureString` type |
|
|
713
|
+
| Hardcoded API keys or JWT tokens in XAML | Credentials in source control | Use Orchestrator Credential assets |
|
|
714
|
+
| Hardcoded URLs in activity properties | Breaks across environments | Use Config.xlsx Settings or Orchestrator Text assets |
|
|
715
|
+
| Empty Catch blocks (`Catch ex As Exception` with no body) | Silent failures, impossible to debug | At minimum, add `Log Message` with `ex.Message` |
|
|
716
|
+
| Timeout values as magic numbers (`30000`) | Unclear intent, hard to tune | Use Config.xlsx Constants with descriptive names |
|
|
717
|
+
|
|
718
|
+
---
|
|
719
|
+
|
|
720
|
+
### Deprecated Activity → Replacement
|
|
721
|
+
|
|
722
|
+
Full mapping table: [activity-docs/_PATTERNS.md § Deprecated Activities](./activity-docs/_PATTERNS.md).
|
|
@@ -23,7 +23,7 @@ Boundaries:
|
|
|
23
23
|
|------|-------|
|
|
24
24
|
| Start new projects from a standard baseline | Project templates — [environment-setup.md § Template Selection](environment-setup.md) |
|
|
25
25
|
| Share UI selectors across projects | UI Libraries — [uia-starter-guide.md § Object Repository as a Published UI Library](uia-starter-guide.md) |
|
|
26
|
-
| Reuse logic inside one project | Separate workflow file — [
|
|
26
|
+
| Reuse logic inside one project | Separate workflow file — [environment-setup.md § Designing for Reuse](environment-setup.md#designing-for-reuse) |
|
|
27
27
|
|
|
28
28
|
## Creating and Structuring
|
|
29
29
|
|
|
@@ -131,7 +131,7 @@ Rules:
|
|
|
131
131
|
Each public workflow is an API surface. Apply every rule:
|
|
132
132
|
|
|
133
133
|
1. **Name workflows verb-noun PascalCase, no spaces** — `SendNotificationEmail.xaml`, `DownloadInvoices.xaml`. The file name becomes the activity name in the consumer's panel.
|
|
134
|
-
2. **Public arguments: PascalCase, NO `in_`/`out_`/`io_` prefixes** — `InvoiceId`, `RecipientEmail`, `NotificationResult`. Argument names become activity property names; prefixes become noise on the property grid. This inverts the process-workflow convention: workflows invoked via Invoke Workflow File keep directional prefixes ([
|
|
134
|
+
2. **Public arguments: PascalCase, NO `in_`/`out_`/`io_` prefixes** — `InvoiceId`, `RecipientEmail`, `NotificationResult`. Argument names become activity property names; prefixes become noise on the property grid. This inverts the process-workflow convention: workflows invoked via Invoke Workflow File keep directional prefixes ([environment-setup.md § Designing for Reuse](environment-setup.md#designing-for-reuse)); library public workflows drop them.
|
|
135
135
|
3. **Describe every public argument** via its `sap2010:Annotation.AnnotationText` — descriptions ship as property tooltips. For display names, placeholders, widgets, and grouping, add the layout sidecar ([§ Activity Layout](#activity-layout--the-sidecar-file)).
|
|
136
136
|
4. **Expect — and keep — the analyzer naming warnings.** `build`/`pack` emit `Argument <Name> does not respect the set pattern ^in_...` for prefix-free library arguments. The warning is non-blocking. Do NOT rename arguments to silence it.
|
|
137
137
|
5. **Return application handles.** A workflow that opens or attaches to an app outputs the window/browser object; downstream public workflows accept it as an input argument instead of reopening.
|
|
@@ -166,7 +166,8 @@ uip rpa pack "<PROJECT_DIR>" "<OUTPUT_DIR>" --output json
|
|
|
166
166
|
uip or libraries upload --file "<OUTPUT_DIR>/<LIBRARY_NAME>.<VERSION>.nupkg" --output json
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
-
- Libraries upload to the tenant-scoped **libraries feed** — not the per-folder processes feed that [
|
|
169
|
+
- Libraries upload to the tenant-scoped **libraries feed** — not the per-folder processes feed that [cli-reference.md § Pack & Publish to Orchestrator](cli-reference.md#pack--publish-to-orchestrator) covers with `uip or packages upload`. There is no `uip rpa publish`.
|
|
170
|
+
- `<OUTPUT_DIR>` must be OUTSIDE the project directory tree — `pack` refuses an output path inside the project. Use a sibling directory (e.g. `dist/`).
|
|
170
171
|
- `--feed-id <FEED_ID>` targets a non-default feed.
|
|
171
172
|
- Verify the publish:
|
|
172
173
|
|
|
@@ -17,19 +17,7 @@ Reference for XAML test automation features in UiPath RPA projects — XAML test
|
|
|
17
17
|
|
|
18
18
|
## Test Manager Setup (CLI)
|
|
19
19
|
|
|
20
|
-
Linking a project to Test Manager (server connection + default project) can be done headlessly with `uip rpa tm`, without opening Studio — useful before authoring test cases that reference Test Manager test cases.
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
uip rpa tm connect --url "https://<host>/<org>/<tenant>/testmanager_" --project-dir "<PROJECT_DIR>" --output json
|
|
24
|
-
uip rpa tm set-default-project --id <project-guid> --name "<name>" --key "<KEY>" --project-dir "<PROJECT_DIR>" --output json
|
|
25
|
-
uip rpa tm status --project-dir "<PROJECT_DIR>" --output json
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Behavior to know when authoring:
|
|
29
|
-
- **`set-default-project` requires a connected server** — run `connect` first, or it is rejected (nothing is written).
|
|
30
|
-
- **Switching to a different server** (`connect` to a different host/org/tenant) **clears the default project** — it belonged to the old server. Re-link one with `set-default-project` afterwards.
|
|
31
|
-
- **`reloadHint` in the output**: if the project is open in a **Studio older than 26.0.197**, the change isn't picked up until the project is reloaded. When you see `reloadHint`, tell the user to **close and reopen the project in Studio**. Studio 26.0.197+ applies the change live (no `reloadHint`).
|
|
32
|
-
- The CLI does **not** validate the project id against the server; obtain a real id from Test Manager (the runtime `uip tm project list` tool can list them).
|
|
20
|
+
Linking a project to Test Manager (server connection + default project) can be done headlessly with `uip rpa tm`, without opening Studio — useful before authoring test cases that reference Test Manager test cases. Commands, ordering constraints (`connect` before `set-default-project`, server switches clearing the default project), and `reloadHint` handling: [cli-reference.md § Test Manager](cli-reference.md#test-manager). The CLI does **not** validate the project id against the server; obtain a real id from Test Manager (the runtime `uip tm project list` tool can list them).
|
|
33
21
|
|
|
34
22
|
---
|
|
35
23
|
|
|
@@ -111,21 +99,7 @@ If the workflow has arguments, pass them in the `InvokeWorkflowFile.Arguments` d
|
|
|
111
99
|
|
|
112
100
|
Register every XAML test case in `designOptions.fileInfoCollection` — this is **Common Rule 10** in SKILL.md and applies to both XAML and coded test cases. Test cases live **only** in `fileInfoCollection`, never in `entryPoints` — `entryPoints` is for executable workflow files in Process projects (e.g. `Main.xaml`), and test cases are not workflow entry points regardless of project type.
|
|
113
101
|
|
|
114
|
-
|
|
115
|
-
{
|
|
116
|
-
"designOptions": {
|
|
117
|
-
"fileInfoCollection": [
|
|
118
|
-
{
|
|
119
|
-
"editingStatus": "InProgress",
|
|
120
|
-
"testCaseId": "<UNIQUE_GUID>",
|
|
121
|
-
"testCaseType": "TestCase",
|
|
122
|
-
"executionTemplateInvokeIsolated": false,
|
|
123
|
-
"fileName": "TestCase.xaml"
|
|
124
|
-
}
|
|
125
|
-
]
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
```
|
|
102
|
+
Copy-paste JSON snippet (including `publishAsTestCase` for coded test cases and `dataVariationFilePath` for data-driven): [../assets/json-template.md](../assets/json-template.md).
|
|
129
103
|
|
|
130
104
|
**Required keys per entry:**
|
|
131
105
|
|
|
@@ -205,7 +205,7 @@ Applies to all integration triggers, and to local triggers placed at root.
|
|
|
205
205
|
|
|
206
206
|
1. **Author** — place trigger as the first activity of root `Sequence`, bind output to variable, write handler. Per-file `validate` clean.
|
|
207
207
|
2. **Build** — `uip rpa build "<PROJECT_DIR>" --output json` clean.
|
|
208
|
-
3. **Publish** — `.nupkg` to Orchestrator (see [
|
|
208
|
+
3. **Publish** — `.nupkg` to Orchestrator (see [cli-reference.md § Pack & Publish to Orchestrator](cli-reference.md#pack--publish-to-orchestrator)). On publish, Orchestrator detects the trigger from the workflow's activity registration and exposes it as a Process/Time/Queue Trigger candidate.
|
|
209
209
|
|
|
210
210
|
**`uip rpa run` is NOT a meaningful smoke test for entry-point triggers.** The CLI executes the workflow once in-process, which does not exercise Orchestrator subscription or the connector's webhook/polling lifecycle. A clean `run` only proves the handler XAML compiles and the trigger activity can be instantiated.
|
|
211
211
|
|
|
@@ -6,6 +6,142 @@ How to generate ViewState for Flowchart, State Machine, and Long Running Workflo
|
|
|
6
6
|
- **Sequences**: ViewState is optional — Studio auto-stacks children vertically. Only `IsExpanded=True` matters.
|
|
7
7
|
- **Flowcharts, State Machines, ProcessDiagrams**: ViewState is **mandatory** for usable layout. Without it, Studio stacks all nodes at (0,0).
|
|
8
8
|
|
|
9
|
+
## Flowchart Structure & Wiring
|
|
10
|
+
|
|
11
|
+
### When to Use a Flowchart
|
|
12
|
+
|
|
13
|
+
Branching logic with multiple decision points, loops, and back-edges. Best when the flow is a graph rather than a straight sequence. For straight-line steps use a `Sequence`; for state-driven processes use a State Machine; for BPMN-style event-driven long waits use a Long Running Workflow (ProcessDiagram).
|
|
14
|
+
|
|
15
|
+
### Node Vocabulary
|
|
16
|
+
|
|
17
|
+
| Node | Purpose | Successor wiring |
|
|
18
|
+
|------|---------|------------------|
|
|
19
|
+
| `FlowStep` | Wraps **exactly one** activity (which may be a container). The unit of work. | `FlowStep.Next` → one node |
|
|
20
|
+
| `FlowDecision` | Boolean branch. `Condition` plus `True`/`False` targets. | `FlowDecision.True` / `.False` → one node each |
|
|
21
|
+
| `FlowSwitch<T>` | Multi-way branch keyed by an expression. | `Default` plus one target per case |
|
|
22
|
+
|
|
23
|
+
A `FlowStep` wraps one activity. If that activity is a container (`Sequence`, `NApplicationCard`, `TryCatch`), its children stay nested and are NOT separate nodes. See [§ What Counts as a Node](#what-counts-as-a-node).
|
|
24
|
+
|
|
25
|
+
### Wiring
|
|
26
|
+
|
|
27
|
+
**Rule:** every `FlowStep`/`FlowDecision`/`FlowSwitch` is a **direct child of `<Flowchart>`** with an `x:Name`. Links between nodes are made with `<x:Reference>__ReferenceIDn</x:Reference>` inside property elements — never by physically nesting one node inside another.
|
|
28
|
+
|
|
29
|
+
```xml
|
|
30
|
+
<Flowchart DisplayName="My Flowchart" sap2010:WorkflowViewState.IdRef="Flowchart_1">
|
|
31
|
+
<Flowchart.StartNode>
|
|
32
|
+
<x:Reference>__ReferenceID0</x:Reference>
|
|
33
|
+
</Flowchart.StartNode>
|
|
34
|
+
<FlowStep x:Name="__ReferenceID0">
|
|
35
|
+
<ui:LogMessage DisplayName="Step 1" />
|
|
36
|
+
<FlowStep.Next>
|
|
37
|
+
<x:Reference>__ReferenceID1</x:Reference>
|
|
38
|
+
</FlowStep.Next>
|
|
39
|
+
</FlowStep>
|
|
40
|
+
<FlowDecision x:Name="__ReferenceID1">
|
|
41
|
+
<FlowDecision.Condition>
|
|
42
|
+
<CSharpValue x:TypeArguments="x:Boolean">condition</CSharpValue>
|
|
43
|
+
</FlowDecision.Condition>
|
|
44
|
+
<FlowDecision.True>
|
|
45
|
+
<x:Reference>__ReferenceID0</x:Reference>
|
|
46
|
+
</FlowDecision.True>
|
|
47
|
+
<!-- FlowDecision.False omitted = end of flow -->
|
|
48
|
+
</FlowDecision>
|
|
49
|
+
</Flowchart>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Where `<x:Reference>` Goes
|
|
53
|
+
|
|
54
|
+
`<x:Reference>` is used ONLY inside property elements to create cross-references between nodes:
|
|
55
|
+
|
|
56
|
+
| Property Element | Container | Purpose |
|
|
57
|
+
|-----------------|-----------|---------|
|
|
58
|
+
| `Flowchart.StartNode` | Flowchart | Points to the first node |
|
|
59
|
+
| `FlowStep.Next` | Flowchart | Links to the next node |
|
|
60
|
+
| `FlowDecision.True` / `.False` | Flowchart | Branch targets |
|
|
61
|
+
| `Transition.To` | State Machine | Transition destination state |
|
|
62
|
+
| `StateMachine.InitialState` | State Machine | Starting state (attribute form: `{x:Reference ...}`) |
|
|
63
|
+
| `ProcessDiagram.StartNode` | ProcessDiagram | Points to start event |
|
|
64
|
+
| `EventNode.Next` / `TaskNode.Next` | ProcessDiagram | Links to next node |
|
|
65
|
+
| `DecisionNode.True` / `.False` | ProcessDiagram | Branch targets |
|
|
66
|
+
|
|
67
|
+
### Node Registration
|
|
68
|
+
|
|
69
|
+
Only nodes in the `Flowchart.Nodes` collection render — and that collection is built from the **direct children** of `<Flowchart>`. A node that is not a direct child is never registered, so the designer does not draw it, regardless of ViewState. The same registration rules apply to `<StateMachine>` (States) and `<upa:ProcessDiagram>` and its node types (`EventNode`, `TaskNode`, `DecisionNode`, `SwitchNode<T>`, `SplitNode`, `MergeNode`, `SubProcessNode`, `EndNode`, `BoundaryNode`).
|
|
70
|
+
|
|
71
|
+
Two cases:
|
|
72
|
+
|
|
73
|
+
1. **Direct children** of the container — already registered. Do NOT also add a trailing `<x:Reference>`.
|
|
74
|
+
2. **Inline definitions** inside a property element (e.g., a `FlowStep` written inside `<FlowDecision.True>`) — MUST add a trailing `<x:Reference>` entry as a direct child of the container to register them.
|
|
75
|
+
|
|
76
|
+
**Correct — inline node registered with trailing `<x:Reference>`:**
|
|
77
|
+
```xml
|
|
78
|
+
<Flowchart>
|
|
79
|
+
<Flowchart.StartNode>
|
|
80
|
+
<x:Reference>__ReferenceID0</x:Reference>
|
|
81
|
+
</Flowchart.StartNode>
|
|
82
|
+
<FlowDecision x:Name="__ReferenceID0"> <!-- direct child — no trailing ref -->
|
|
83
|
+
<FlowDecision.True>
|
|
84
|
+
<FlowStep x:Name="__ReferenceID1"> <!-- inline definition -->
|
|
85
|
+
...
|
|
86
|
+
</FlowStep>
|
|
87
|
+
</FlowDecision.True>
|
|
88
|
+
</FlowDecision>
|
|
89
|
+
<x:Reference>__ReferenceID1</x:Reference> <!-- register inline node -->
|
|
90
|
+
</Flowchart>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Wrong — re-listing a direct child:**
|
|
94
|
+
```xml
|
|
95
|
+
<Flowchart>
|
|
96
|
+
<FlowStep x:Name="__ReferenceID0"> <!-- direct child -->
|
|
97
|
+
...
|
|
98
|
+
</FlowStep>
|
|
99
|
+
<x:Reference>__ReferenceID0</x:Reference> <!-- WRONG — already a direct child -->
|
|
100
|
+
</Flowchart>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Forbidden — nested FlowStep chains
|
|
104
|
+
|
|
105
|
+
Do NOT build the flow by physically nesting each `FlowStep` inside the previous one's `<FlowStep.Next>` (a deep chain with only the first node under `<Flowchart.StartNode>`). Nested-only steps never enter `Flowchart.Nodes`, so the designer renders almost nothing — invisible regardless of ViewState. Wire successors by reference (as in [§ Wiring](#wiring)) and keep every step a direct child.
|
|
106
|
+
|
|
107
|
+
**Wrong** — Step 2 nested inside Step 1's `.Next`; `Flowchart.Nodes` holds only Step 1, so Step 2 never renders:
|
|
108
|
+
```xml
|
|
109
|
+
<Flowchart sap2010:WorkflowViewState.IdRef="Flowchart_1">
|
|
110
|
+
<Flowchart.StartNode>
|
|
111
|
+
<x:Reference>__ReferenceID0</x:Reference>
|
|
112
|
+
</Flowchart.StartNode>
|
|
113
|
+
<FlowStep x:Name="__ReferenceID0">
|
|
114
|
+
<ui:LogMessage DisplayName="Step 1" />
|
|
115
|
+
<FlowStep.Next>
|
|
116
|
+
<FlowStep> <!-- WRONG — nested, not registered -->
|
|
117
|
+
<ui:LogMessage DisplayName="Step 2" />
|
|
118
|
+
</FlowStep>
|
|
119
|
+
</FlowStep.Next>
|
|
120
|
+
</FlowStep>
|
|
121
|
+
</Flowchart>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### `__ReferenceID` Gotchas
|
|
125
|
+
|
|
126
|
+
- `__ReferenceID` values must be unique within the entire XAML file — duplicate IDs cause deserialization errors. When adding nodes manually, use a number higher than any existing one (Studio auto-renumbers on copy-paste; manual XAML editing doesn't).
|
|
127
|
+
- When copying from flowchart to sequence, elements may be ordered backwards due to node ordering in XAML.
|
|
128
|
+
- `x:Reference` can only refer to elements with `x:Name` in the same XAML file — cross-file references are not supported.
|
|
129
|
+
|
|
130
|
+
### No Orphan Nodes
|
|
131
|
+
|
|
132
|
+
Every node except the start must be reachable: referenced by `Flowchart.StartNode`, a `FlowStep.Next`, or a decision/switch branch. A `FlowStep` with no incoming reference and no `FlowStep.Next` is an orphan — it renders as a disconnected box and is almost always a leftover. Do not generate them.
|
|
133
|
+
|
|
134
|
+
### Condition Expressions
|
|
135
|
+
|
|
136
|
+
`FlowDecision.Condition` and `FlowSwitch` expressions follow the project's expression language:
|
|
137
|
+
|
|
138
|
+
- **C# projects:** `<CSharpValue x:TypeArguments="x:Boolean">condition</CSharpValue>`
|
|
139
|
+
- **VB projects:** `<mva:VisualBasicValue x:TypeArguments="x:Boolean" ExpressionText="condition" />`
|
|
140
|
+
|
|
141
|
+
Structure first, then coordinates: ViewState positions a node **only after** it is registered — see [§ 3. Flowchart Layout](#3-flowchart-layout) below and SKILL.md Rule 20.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
9
145
|
---
|
|
10
146
|
|
|
11
147
|
## 1. Required XAML Namespaces
|
|
@@ -68,7 +204,7 @@ Every activity should have `sap:VirtualizedContainerService.HintSize` as an attr
|
|
|
68
204
|
|
|
69
205
|
## 3. Flowchart Layout
|
|
70
206
|
|
|
71
|
-
Node vocabulary, structure & wiring, and node registration: [
|
|
207
|
+
Node vocabulary, structure & wiring, and node registration: [§ Flowchart Structure & Wiring](#flowchart-structure--wiring) above. This section covers layout coordinates and ViewState only.
|
|
72
208
|
|
|
73
209
|
### What Counts as a Node
|
|
74
210
|
|
|
@@ -79,11 +215,6 @@ One node per top-level step → separate boxes. One step's children nested → s
|
|
|
79
215
|
### Required vs. Optional ViewState Keys
|
|
80
216
|
|
|
81
217
|
`ShapeLocation` + `ShapeSize` are the **required** pair on every node — they are what makes nodes render as separate boxes. `ConnectorLocation` (and `TrueConnector`/`FalseConnector`) is **optional**: Studio auto-routes connectors from the source and target node positions. The recipes below include connectors for precise routing, but omitting them is valid — Studio's own saved output omits them entirely.
|
|
82
|
-
|
|
83
|
-
### No Orphan Nodes
|
|
84
|
-
|
|
85
|
-
Every node except the start must be reachable: referenced by `Flowchart.StartNode`, a `FlowStep.Next`, or a decision/switch branch. A `FlowStep` with no incoming reference and no `FlowStep.Next` is an orphan — it renders as a disconnected box and is almost always a leftover. Do not generate them.
|
|
86
|
-
|
|
87
218
|
### Coordinate System
|
|
88
219
|
|
|
89
220
|
- **Origin**: Top-left corner (0, 0)
|
|
@@ -276,33 +407,9 @@ FlowDecision: (270, 220) 60x60
|
|
|
276
407
|
True branch: (100, 330) 200x60 (left)
|
|
277
408
|
False branch: (400, 330) 200x60 (right)
|
|
278
409
|
```
|
|
279
|
-
|
|
280
410
|
### Node Registration
|
|
281
411
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
Only nodes in the `Flowchart.Nodes` collection (the direct children) render. ViewState positions a node **only after** it is registered there — coordinates on an unregistered node do nothing.
|
|
285
|
-
|
|
286
|
-
**Forbidden — nested FlowStep chains.** Do NOT build the flow by physically nesting each `FlowStep` inside the previous one's `<FlowStep.Next>`, leaving only the first node under `<Flowchart.StartNode>`. Nested-only steps never enter `Flowchart.Nodes`, so the designer renders almost nothing — invisible regardless of ViewState. Wire each step's successor with `<FlowStep.Next><x:Reference>__ReferenceIDn</x:Reference></FlowStep.Next>` and keep every `FlowStep` a direct child of `<Flowchart>`:
|
|
287
|
-
|
|
288
|
-
```xml
|
|
289
|
-
<Flowchart>
|
|
290
|
-
<Flowchart.StartNode>
|
|
291
|
-
<x:Reference>__ReferenceID0</x:Reference>
|
|
292
|
-
</Flowchart.StartNode>
|
|
293
|
-
<FlowStep x:Name="__ReferenceID0"> <!-- direct child -->
|
|
294
|
-
<ui:LogMessage DisplayName="Step 1" />
|
|
295
|
-
<FlowStep.Next>
|
|
296
|
-
<x:Reference>__ReferenceID1</x:Reference> <!-- link by reference, NOT by nesting -->
|
|
297
|
-
</FlowStep.Next>
|
|
298
|
-
</FlowStep>
|
|
299
|
-
<FlowStep x:Name="__ReferenceID1"> <!-- direct child -->
|
|
300
|
-
<ui:LogMessage DisplayName="Step 2" />
|
|
301
|
-
</FlowStep>
|
|
302
|
-
</Flowchart>
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
See [common-pitfalls.md § x:Reference](common-pitfalls.md#xreference--__referenceid-naming) for the full rules with correct/wrong examples.
|
|
412
|
+
See [§ Node Registration](#node-registration) at the top of this file — structure and registration come before coordinates.
|
|
306
413
|
|
|
307
414
|
---
|
|
308
415
|
|
|
@@ -422,7 +529,7 @@ End State: (164, 385) 229x110 (IsFinal=True)
|
|
|
422
529
|
|
|
423
530
|
### Node Registration
|
|
424
531
|
|
|
425
|
-
States defined inline inside `Transition.To` need `<x:Reference>` registration as direct children of `<StateMachine
|
|
532
|
+
States defined inline inside `Transition.To` need `<x:Reference>` registration as direct children of `<StateMachine>`. See [§ Node Registration](#node-registration).
|
|
426
533
|
|
|
427
534
|
---
|
|
428
535
|
|
|
@@ -644,7 +751,7 @@ EventNode (start) → TaskNode 1 → DecisionNode → TaskNode 2 → End
|
|
|
644
751
|
|
|
645
752
|
### Node Registration
|
|
646
753
|
|
|
647
|
-
Same rules as Flowchart —
|
|
754
|
+
Same rules as Flowchart — inline nodes need trailing `<x:Reference>` entries as direct children of `<upa:ProcessDiagram>`. See [§ Node Registration](#node-registration).
|
|
648
755
|
|
|
649
756
|
---
|
|
650
757
|
|