From a8f6efcf5fb6c4aa2c1b6ed6466f3be03c62ff32 Mon Sep 17 00:00:00 2001 From: viogroza Date: Fri, 1 May 2026 13:51:35 +0300 Subject: [PATCH 1/2] community activities samples --- .../.codedworkflows/ConnectionsFactory.cs | 3 + .../.codedworkflows/ConnectionsManager.cs | 12 + CodedCredentialsDemo/.objects/.metadata | 9 + CodedCredentialsDemo/.objects/.type | 1 + .../.project/PackageBindingsMetadata.json | 807 +++++++ CodedCredentialsDemo/.project/design.json | 6 + CodedCredentialsDemo/CodedCredentialsT.cs | 48 + CodedCredentialsDemo/Main.xaml | 114 + CodedCredentialsDemo/Main.xaml.json | 45 + CodedCredentialsDemo/entry-points.json | 36 + CodedCredentialsDemo/project.json | 64 + CodedCredentialsDemo/project.uiproj | 6 + .../.codedworkflows/ConnectionsFactory.cs | 3 + .../.codedworkflows/ConnectionsManager.cs | 12 + CodedDatabaseDemo/.objects/.metadata | 9 + CodedDatabaseDemo/.objects/.type | 1 + .../.project/PackageBindingsMetadata.json | 807 +++++++ CodedDatabaseDemo/.project/design.json | 6 + CodedDatabaseDemo/Main.xaml | 65 + CodedDatabaseDemo/SqliteCodedTests.cs | 77 + CodedDatabaseDemo/SqliteSimpleTests.xaml | 466 ++++ CodedDatabaseDemo/dt.txt | 1 + CodedDatabaseDemo/entry-points.json | 15 + CodedDatabaseDemo/mySqlite.db | Bin 0 -> 12288 bytes CodedDatabaseDemo/project.json | 64 + CodedDatabaseDemo/project.uiproj | 6 + .../.codedworkflows/ConnectionsFactory.cs | 3 + .../.codedworkflows/ConnectionsManager.cs | 12 + CodedFTPDemo/.objects/.metadata | 9 + CodedFTPDemo/.objects/.type | 1 + .../.project/PackageBindingsMetadata.json | 807 +++++++ CodedFTPDemo/.project/design.json | 6 + CodedFTPDemo/CodedTests.cs | 68 + CodedFTPDemo/CodedTests.cs.json | 21 + CodedFTPDemo/Main.xaml | 203 ++ CodedFTPDemo/Main.xaml.json | 45 + CodedFTPDemo/entry-points.json | 1971 +++++++++++++++++ CodedFTPDemo/project.json | 65 + CodedFTPDemo/project.uiproj | 6 + CodedFTPDemo/remoteImg.png | Bin 0 -> 152115 bytes .../.codedworkflows/ConnectionsFactory.cs | 3 + .../.codedworkflows/ConnectionsManager.cs | 12 + CodedJavaDemo/.objects/.metadata | 9 + CodedJavaDemo/.objects/.type | 1 + .../.project/PackageBindingsMetadata.json | 807 +++++++ CodedJavaDemo/.project/design.json | 6 + CodedJavaDemo/JavaActivities.xaml | 233 ++ CodedJavaDemo/JavaActivities.xaml.json | 21 + CodedJavaDemo/JavaCodedTests.cs | 62 + CodedJavaDemo/JavaCodedTests.cs.json | 21 + CodedJavaDemo/Objects.jar | Bin 0 -> 2855 bytes CodedJavaDemo/entry-points.json | 1960 ++++++++++++++++ CodedJavaDemo/project.json | 65 + CodedJavaDemo/project.uiproj | 6 + .../source code for java/Coordinate.java | 77 + .../source code for java/StaticMethods.java | 48 + .../.codedworkflows/ConnectionsFactory.cs | 3 + .../.codedworkflows/ConnectionsManager.cs | 12 + CodedPythonDemo/.objects/.metadata | 9 + CodedPythonDemo/.objects/.type | 1 + .../.project/PackageBindingsMetadata.json | 687 ++++++ CodedPythonDemo/.project/design.json | 6 + CodedPythonDemo/Main.xaml | 206 ++ CodedPythonDemo/Main.xaml.json | 33 + CodedPythonDemo/PythonTests.cs | 59 + CodedPythonDemo/PythonTests.cs.json | 21 + CodedPythonDemo/PythonTestsXm.xaml | 205 ++ CodedPythonDemo/entry-points.json | 1964 ++++++++++++++++ CodedPythonDemo/project.json | 64 + CodedPythonDemo/project.uiproj | 6 + README.md | 5 + 71 files changed, 12512 insertions(+) create mode 100644 CodedCredentialsDemo/.codedworkflows/ConnectionsFactory.cs create mode 100644 CodedCredentialsDemo/.codedworkflows/ConnectionsManager.cs create mode 100644 CodedCredentialsDemo/.objects/.metadata create mode 100644 CodedCredentialsDemo/.objects/.type create mode 100644 CodedCredentialsDemo/.project/PackageBindingsMetadata.json create mode 100644 CodedCredentialsDemo/.project/design.json create mode 100644 CodedCredentialsDemo/CodedCredentialsT.cs create mode 100644 CodedCredentialsDemo/Main.xaml create mode 100644 CodedCredentialsDemo/Main.xaml.json create mode 100644 CodedCredentialsDemo/entry-points.json create mode 100644 CodedCredentialsDemo/project.json create mode 100644 CodedCredentialsDemo/project.uiproj create mode 100644 CodedDatabaseDemo/.codedworkflows/ConnectionsFactory.cs create mode 100644 CodedDatabaseDemo/.codedworkflows/ConnectionsManager.cs create mode 100644 CodedDatabaseDemo/.objects/.metadata create mode 100644 CodedDatabaseDemo/.objects/.type create mode 100644 CodedDatabaseDemo/.project/PackageBindingsMetadata.json create mode 100644 CodedDatabaseDemo/.project/design.json create mode 100644 CodedDatabaseDemo/Main.xaml create mode 100644 CodedDatabaseDemo/SqliteCodedTests.cs create mode 100644 CodedDatabaseDemo/SqliteSimpleTests.xaml create mode 100644 CodedDatabaseDemo/dt.txt create mode 100644 CodedDatabaseDemo/entry-points.json create mode 100644 CodedDatabaseDemo/mySqlite.db create mode 100644 CodedDatabaseDemo/project.json create mode 100644 CodedDatabaseDemo/project.uiproj create mode 100644 CodedFTPDemo/.codedworkflows/ConnectionsFactory.cs create mode 100644 CodedFTPDemo/.codedworkflows/ConnectionsManager.cs create mode 100644 CodedFTPDemo/.objects/.metadata create mode 100644 CodedFTPDemo/.objects/.type create mode 100644 CodedFTPDemo/.project/PackageBindingsMetadata.json create mode 100644 CodedFTPDemo/.project/design.json create mode 100644 CodedFTPDemo/CodedTests.cs create mode 100644 CodedFTPDemo/CodedTests.cs.json create mode 100644 CodedFTPDemo/Main.xaml create mode 100644 CodedFTPDemo/Main.xaml.json create mode 100644 CodedFTPDemo/entry-points.json create mode 100644 CodedFTPDemo/project.json create mode 100644 CodedFTPDemo/project.uiproj create mode 100644 CodedFTPDemo/remoteImg.png create mode 100644 CodedJavaDemo/.codedworkflows/ConnectionsFactory.cs create mode 100644 CodedJavaDemo/.codedworkflows/ConnectionsManager.cs create mode 100644 CodedJavaDemo/.objects/.metadata create mode 100644 CodedJavaDemo/.objects/.type create mode 100644 CodedJavaDemo/.project/PackageBindingsMetadata.json create mode 100644 CodedJavaDemo/.project/design.json create mode 100644 CodedJavaDemo/JavaActivities.xaml create mode 100644 CodedJavaDemo/JavaActivities.xaml.json create mode 100644 CodedJavaDemo/JavaCodedTests.cs create mode 100644 CodedJavaDemo/JavaCodedTests.cs.json create mode 100644 CodedJavaDemo/Objects.jar create mode 100644 CodedJavaDemo/entry-points.json create mode 100644 CodedJavaDemo/project.json create mode 100644 CodedJavaDemo/project.uiproj create mode 100644 CodedJavaDemo/source code for java/Coordinate.java create mode 100644 CodedJavaDemo/source code for java/StaticMethods.java create mode 100644 CodedPythonDemo/.codedworkflows/ConnectionsFactory.cs create mode 100644 CodedPythonDemo/.codedworkflows/ConnectionsManager.cs create mode 100644 CodedPythonDemo/.objects/.metadata create mode 100644 CodedPythonDemo/.objects/.type create mode 100644 CodedPythonDemo/.project/PackageBindingsMetadata.json create mode 100644 CodedPythonDemo/.project/design.json create mode 100644 CodedPythonDemo/Main.xaml create mode 100644 CodedPythonDemo/Main.xaml.json create mode 100644 CodedPythonDemo/PythonTests.cs create mode 100644 CodedPythonDemo/PythonTests.cs.json create mode 100644 CodedPythonDemo/PythonTestsXm.xaml create mode 100644 CodedPythonDemo/entry-points.json create mode 100644 CodedPythonDemo/project.json create mode 100644 CodedPythonDemo/project.uiproj diff --git a/CodedCredentialsDemo/.codedworkflows/ConnectionsFactory.cs b/CodedCredentialsDemo/.codedworkflows/ConnectionsFactory.cs new file mode 100644 index 0000000..6d9cdd6 --- /dev/null +++ b/CodedCredentialsDemo/.codedworkflows/ConnectionsFactory.cs @@ -0,0 +1,3 @@ +namespace CodedCredentialsDemo +{ +} \ No newline at end of file diff --git a/CodedCredentialsDemo/.codedworkflows/ConnectionsManager.cs b/CodedCredentialsDemo/.codedworkflows/ConnectionsManager.cs new file mode 100644 index 0000000..54dde80 --- /dev/null +++ b/CodedCredentialsDemo/.codedworkflows/ConnectionsManager.cs @@ -0,0 +1,12 @@ +using UiPath.CodedWorkflows; +using System; + +namespace CodedCredentialsDemo +{ + public class ConnectionsManager + { + public ConnectionsManager(ICodedWorkflowsServiceContainer resolver) + { + } + } +} \ No newline at end of file diff --git a/CodedCredentialsDemo/.objects/.metadata b/CodedCredentialsDemo/.objects/.metadata new file mode 100644 index 0000000..042eb67 --- /dev/null +++ b/CodedCredentialsDemo/.objects/.metadata @@ -0,0 +1,9 @@ +{ + "Type": "Library", + "Id": "x97CRi6Zf0uSIugnPA6kWw", + "Created": "2026-04-30T15:52:39.9190326Z", + "Updated": "2026-04-30T15:52:39.9190326Z", + "CreatedBy": [ + "UiPath.Platform, Version=24.11.1.0, Culture=neutral, PublicKeyToken=null" + ] +} \ No newline at end of file diff --git a/CodedCredentialsDemo/.objects/.type b/CodedCredentialsDemo/.objects/.type new file mode 100644 index 0000000..729bdde --- /dev/null +++ b/CodedCredentialsDemo/.objects/.type @@ -0,0 +1 @@ +Library \ No newline at end of file diff --git a/CodedCredentialsDemo/.project/PackageBindingsMetadata.json b/CodedCredentialsDemo/.project/PackageBindingsMetadata.json new file mode 100644 index 0000000..3289853 --- /dev/null +++ b/CodedCredentialsDemo/.project/PackageBindingsMetadata.json @@ -0,0 +1,807 @@ +{ + "ActivityBindings": { + "UiPath.Activities.System.Jobs.RunJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddAndProcessQueueItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.AddQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddTransactionItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.BeginProcess": [ + { + "Type": "process", + "Values": { + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.BulkAddQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.DeleteQueueItems": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.EvaluateBusinessRule": [ + { + "Type": "businessRule", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "BusinessRule", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetJobs": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.GetQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetTransactionItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.InvokeProcess": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.PostponeTransactionItem": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.QueueTrigger": [ + { + "Type": "QueueTrigger", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "ItemsActivationThreshold": { + "Value": "ItemsActivationThreshold", + "ValueSource": "Property" + }, + "ItemsPerJobActivationTarget": { + "Value": "ItemsPerJobActivationTarget", + "ValueSource": "Property" + }, + "MaxJobsForActivation": { + "Value": "MaxJobsForActivation", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "CredentialName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetTransactionProgress": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.SetTransactionStatus": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.StartJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.StopJob": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.Storage.DeleteStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.DownloadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ListStorageFiles": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ReadStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.UploadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.WriteStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.TimeTrigger": [ + { + "Type": "TimeTrigger", + "PublishNullValues": false, + "Key": { + "Value": "N/A", + "ValueSource": "Property" + }, + "Values": {}, + "Arguments": { + "TimeZone": { + "Value": "TimeZone", + "ValueSource": "Property" + }, + "CronExpression": { + "Value": "CronExpression", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.1", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.WaitQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ] + } +} \ No newline at end of file diff --git a/CodedCredentialsDemo/.project/design.json b/CodedCredentialsDemo/.project/design.json new file mode 100644 index 0000000..206a9f3 --- /dev/null +++ b/CodedCredentialsDemo/.project/design.json @@ -0,0 +1,6 @@ +{ + "Tags": [], + "SeparateRuntimeDependencies": true, + "IncludeSources": true, + "ConnectorKeys": [] +} \ No newline at end of file diff --git a/CodedCredentialsDemo/CodedCredentialsT.cs b/CodedCredentialsDemo/CodedCredentialsT.cs new file mode 100644 index 0000000..75589a0 --- /dev/null +++ b/CodedCredentialsDemo/CodedCredentialsT.cs @@ -0,0 +1,48 @@ +using CredentialManagement; +using System; +using System.Collections.Generic; +using System.Data; +using System.Security; +using UiPath.CodedWorkflows; +using UiPath.Core; +using UiPath.Core.Activities.Storage; +using UiPath.Credentials.Activities; +using UiPath.Credentials.Activities.API; +using UiPath.Credentials.Activities.API.Models; +using UiPath.Orchestrator.Client.Models; + +namespace CodedCredentialsDemo +{ + public class CodedCredentialsT : CodedWorkflow + { + [Workflow] + public void Execute() + { + // To start using services, use IntelliSense (CTRL + Space) to discover the available services: + // e.g. system.GetAsset(...) + + // For accessing UI Elements from Object Repository, you can use the Descriptors class e.g: + // var screen = uiAutomation.Open(Descriptors.MyApp.FirstScreen); + // screen.Click(Descriptors.MyApp.FirstScreen.SettingsButton); + + string target = "someTarget"; + string user = "someUser"; + string password = "somePassword"; + + var added = credentials.AddCredential(target, user, password, CredentialType.Generic, PersistanceType.LocalComputer); + Console.WriteLine($"added credential for target {target}: {added}"); + + var cred = credentials.GetSecureCredential(target, CredentialType.Generic, PersistanceType.LocalComputer); + Console.WriteLine($"retrieved credential: {nameof(cred.Found)} {cred.Found}, {nameof(cred.Username)} {cred.Username}, {nameof(cred.Password)} {cred.Password}"); + //credentials.DeleteCredential(target); + + var reqCred = credentials.RequestCredential("some message", "some title"); + + Console.WriteLine($"retrieved credential: {nameof(reqCred.Confirmed)} {reqCred.Confirmed}, {nameof(reqCred.Username)} {reqCred.Username}, {nameof(reqCred.Password)} {reqCred.Password}"); + + var delCred = credentials.DeleteCredential(target); + + Console.WriteLine("deleted credential for target {target}: {delCred}"); + } + } +} \ No newline at end of file diff --git a/CodedCredentialsDemo/Main.xaml b/CodedCredentialsDemo/Main.xaml new file mode 100644 index 0000000..5015c8f --- /dev/null +++ b/CodedCredentialsDemo/Main.xaml @@ -0,0 +1,114 @@ + + + + + + + + + + ActivityBuilder_1 + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + System.Security + CredentialManagement + System.Reflection + UiPath.Credentials.Activities + System.Linq.Expressions + System.Runtime.Serialization + + + + + Microsoft.VisualBasic + mscorlib + PresentationCore + PresentationFramework + System + System.Activities + System.ComponentModel.TypeConverter + System.Core + System.Data + System.Data.Common + System.Data.DataSetExtensions + System.Drawing + System.Drawing.Common + System.Drawing.Primitives + System.Linq + System.Net.Mail + System.ObjectModel + System.Private.CoreLib + System.Xaml + System.Xml + System.Xml.Linq + UiPath.System.Activities + UiPath.UiAutomation.Activities + WindowsBase + netstandard + UiPath.Studio.Constants + System.Security.Permissions + System.Runtime.InteropServices + CredentialManagement + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.Reflection.Metadata + System.Reflection.MetadataLoadContext + UiPath.Credentials.Activities + System.Console + System.Configuration.ConfigurationManager + System.ComponentModel + System.Memory + System.Private.Uri + System.Linq.Expressions + System.Private.ServiceModel + System.Private.DataContractSerialization + System.Runtime.Serialization.Formatters + System.Runtime.Serialization.Primitives + System.Collections + System.Collections.NonGeneric + + + + + + + + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/CodedCredentialsDemo/Main.xaml.json b/CodedCredentialsDemo/Main.xaml.json new file mode 100644 index 0000000..78fdd89 --- /dev/null +++ b/CodedCredentialsDemo/Main.xaml.json @@ -0,0 +1,45 @@ +{ + "DisplayName": "Main", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "password", + "DisplayName": "password", + "Category": null, + "Tooltip": null, + "Placeholder": "somePassword", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + }, + { + "Name": "user", + "DisplayName": "user", + "Category": null, + "Tooltip": null, + "Placeholder": "someUser", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + }, + { + "Name": "target", + "DisplayName": "target", + "Category": null, + "Tooltip": null, + "Placeholder": "someTarget", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedCredentialsDemo/entry-points.json b/CodedCredentialsDemo/entry-points.json new file mode 100644 index 0000000..6e0c24d --- /dev/null +++ b/CodedCredentialsDemo/entry-points.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://cloud.uipath.com/draft/2024-12/entry-point", + "entryPoints": [ + { + "filePath": "CodedCredentialsT.cs", + "uniqueId": "e33a7b72-00f6-4a3a-820e-ddcb17fb4def", + "type": "process" + }, + { + "filePath": "Main.xaml", + "uniqueId": "49c8993e-11cf-4474-89ae-a0cfbc1368eb", + "type": "process", + "input": { + "type": "object", + "properties": { + "password": { + "type": "string", + "x-default-expression": "\"somePassword\"", + "default": "somePassword" + }, + "user": { + "type": "string", + "x-default-expression": "\"someUser\"", + "default": "someUser" + }, + "target": { + "type": "string", + "x-default-expression": "\"someTarget\"", + "default": "someTarget" + } + }, + "required": [] + } + } + ] +} \ No newline at end of file diff --git a/CodedCredentialsDemo/project.json b/CodedCredentialsDemo/project.json new file mode 100644 index 0000000..3e626d3 --- /dev/null +++ b/CodedCredentialsDemo/project.json @@ -0,0 +1,64 @@ +{ + "name": "CodedCredentialsDemo", + "projectId": "07b10a00-d7b9-4246-9403-418dc76f80e0", + "description": "Sample for credentials coded stuff", + "main": "Main.xaml", + "dependencies": { + "UiPath.Credentials.Activities": "[3.1.0-preview]", + "UiPath.System.Activities": "[26.2.4]" + }, + "webServices": [], + "entitiesStores": [], + "schemaVersion": "4.0", + "studioVersion": "26.0.193.0", + "projectVersion": "1.0.0", + "runtimeOptions": { + "autoDispose": false, + "netFrameworkLazyLoading": false, + "isPausable": true, + "isAttended": false, + "requiresUserInteraction": true, + "supportsPersistence": false, + "workflowSerialization": "NewtonsoftJson", + "excludedLoggedData": [ + "Private:*", + "*password*" + ], + "executionType": "Workflow", + "readyForPiP": false, + "startsInPiP": false, + "mustRestoreAllDependencies": true, + "pipType": "ChildSession" + }, + "designOptions": { + "projectProfile": "Developement", + "outputType": "Process", + "libraryOptions": { + "privateWorkflows": [] + }, + "processOptions": { + "ignoredFiles": [] + }, + "fileInfoCollection": [], + "saveToCloud": false + }, + "expressionLanguage": "VisualBasic", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "49c8993e-11cf-4474-89ae-a0cfbc1368eb", + "input": [], + "output": [] + }, + { + "filePath": "CodedCredentialsT.cs", + "uniqueId": "e33a7b72-00f6-4a3a-820e-ddcb17fb4def", + "input": [], + "output": [] + } + ], + "isTemplate": false, + "templateProjectData": {}, + "publishData": {}, + "targetFramework": "Windows" +} \ No newline at end of file diff --git a/CodedCredentialsDemo/project.uiproj b/CodedCredentialsDemo/project.uiproj new file mode 100644 index 0000000..936c143 --- /dev/null +++ b/CodedCredentialsDemo/project.uiproj @@ -0,0 +1,6 @@ +{ + "Name": "CodedCredentialsDemo", + "ProjectType": "Process", + "Description": "Sample for credentials coded stuff", + "MainFile": "Main.xaml" +} \ No newline at end of file diff --git a/CodedDatabaseDemo/.codedworkflows/ConnectionsFactory.cs b/CodedDatabaseDemo/.codedworkflows/ConnectionsFactory.cs new file mode 100644 index 0000000..ab61f18 --- /dev/null +++ b/CodedDatabaseDemo/.codedworkflows/ConnectionsFactory.cs @@ -0,0 +1,3 @@ +namespace DatabaseCodedDemo +{ +} \ No newline at end of file diff --git a/CodedDatabaseDemo/.codedworkflows/ConnectionsManager.cs b/CodedDatabaseDemo/.codedworkflows/ConnectionsManager.cs new file mode 100644 index 0000000..776fcb3 --- /dev/null +++ b/CodedDatabaseDemo/.codedworkflows/ConnectionsManager.cs @@ -0,0 +1,12 @@ +using UiPath.CodedWorkflows; +using System; + +namespace DatabaseCodedDemo +{ + public class ConnectionsManager + { + public ConnectionsManager(ICodedWorkflowsServiceContainer resolver) + { + } + } +} \ No newline at end of file diff --git a/CodedDatabaseDemo/.objects/.metadata b/CodedDatabaseDemo/.objects/.metadata new file mode 100644 index 0000000..6e6d905 --- /dev/null +++ b/CodedDatabaseDemo/.objects/.metadata @@ -0,0 +1,9 @@ +{ + "Type": "Library", + "Id": "eWBPjJHaKE6N8kM0GA0nzg", + "Created": "2026-04-28T14:44:19.7120649Z", + "Updated": "2026-04-28T14:44:19.7120649Z", + "CreatedBy": [ + "UiPath.Platform, Version=24.11.1.0, Culture=neutral, PublicKeyToken=null" + ] +} \ No newline at end of file diff --git a/CodedDatabaseDemo/.objects/.type b/CodedDatabaseDemo/.objects/.type new file mode 100644 index 0000000..729bdde --- /dev/null +++ b/CodedDatabaseDemo/.objects/.type @@ -0,0 +1 @@ +Library \ No newline at end of file diff --git a/CodedDatabaseDemo/.project/PackageBindingsMetadata.json b/CodedDatabaseDemo/.project/PackageBindingsMetadata.json new file mode 100644 index 0000000..3289853 --- /dev/null +++ b/CodedDatabaseDemo/.project/PackageBindingsMetadata.json @@ -0,0 +1,807 @@ +{ + "ActivityBindings": { + "UiPath.Activities.System.Jobs.RunJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddAndProcessQueueItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.AddQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddTransactionItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.BeginProcess": [ + { + "Type": "process", + "Values": { + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.BulkAddQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.DeleteQueueItems": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.EvaluateBusinessRule": [ + { + "Type": "businessRule", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "BusinessRule", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetJobs": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.GetQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetTransactionItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.InvokeProcess": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.PostponeTransactionItem": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.QueueTrigger": [ + { + "Type": "QueueTrigger", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "ItemsActivationThreshold": { + "Value": "ItemsActivationThreshold", + "ValueSource": "Property" + }, + "ItemsPerJobActivationTarget": { + "Value": "ItemsPerJobActivationTarget", + "ValueSource": "Property" + }, + "MaxJobsForActivation": { + "Value": "MaxJobsForActivation", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "CredentialName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetTransactionProgress": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.SetTransactionStatus": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.StartJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.StopJob": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.Storage.DeleteStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.DownloadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ListStorageFiles": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ReadStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.UploadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.WriteStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.TimeTrigger": [ + { + "Type": "TimeTrigger", + "PublishNullValues": false, + "Key": { + "Value": "N/A", + "ValueSource": "Property" + }, + "Values": {}, + "Arguments": { + "TimeZone": { + "Value": "TimeZone", + "ValueSource": "Property" + }, + "CronExpression": { + "Value": "CronExpression", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.1", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.WaitQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ] + } +} \ No newline at end of file diff --git a/CodedDatabaseDemo/.project/design.json b/CodedDatabaseDemo/.project/design.json new file mode 100644 index 0000000..206a9f3 --- /dev/null +++ b/CodedDatabaseDemo/.project/design.json @@ -0,0 +1,6 @@ +{ + "Tags": [], + "SeparateRuntimeDependencies": true, + "IncludeSources": true, + "ConnectorKeys": [] +} \ No newline at end of file diff --git a/CodedDatabaseDemo/Main.xaml b/CodedDatabaseDemo/Main.xaml new file mode 100644 index 0000000..8cffcb9 --- /dev/null +++ b/CodedDatabaseDemo/Main.xaml @@ -0,0 +1,65 @@ + + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + + + + + Microsoft.VisualBasic + mscorlib + PresentationCore + PresentationFramework + System + System.Activities + System.ComponentModel.TypeConverter + System.Core + System.Data + System.Data.Common + System.Data.DataSetExtensions + System.Drawing + System.Drawing.Common + System.Drawing.Primitives + System.Linq + System.Net.Mail + System.ObjectModel + System.Private.CoreLib + System.Xaml + System.Xml + System.Xml.Linq + UiPath.System.Activities + UiPath.UiAutomation.Activities + WindowsBase + + + + + + True + + + + \ No newline at end of file diff --git a/CodedDatabaseDemo/SqliteCodedTests.cs b/CodedDatabaseDemo/SqliteCodedTests.cs new file mode 100644 index 0000000..a12701d --- /dev/null +++ b/CodedDatabaseDemo/SqliteCodedTests.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Data; +using UiPath.CodedWorkflows; +using UiPath.Core; +using UiPath.Core.Activities.Storage; +using UiPath.Database; +using UiPath.Database.Activities; +using UiPath.Database.Activities.API; +using UiPath.Database.Activities.API.Models; +using UiPath.Orchestrator.Client.Models; + +namespace DatabaseCodedDemo +{ + public class SqliteCodedTests : CodedWorkflow + { + [Workflow] + public void Execute() + { + // To start using services, use IntelliSense (CTRL + Space) to discover the available services: + // e.g. system.GetAsset(...) + + // For accessing UI Elements from Object Repository, you can use the Descriptors class e.g: + // var screen = uiAutomation.Open(Descriptors.MyApp.FirstScreen); + // screen.Click(Descriptors.MyApp.FirstScreen.SettingsButton); + + string tableName = "MYTESTTABLE"; + + using var dbCon = database.UseConnection(new DatabaseScopeOptions() { ProviderName = "Microsoft.Data.Sqlite", ConnectionString = "Data Source=mySqlite.db" }); + + //Check if table exists + var (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName), + default, default); + + bool exists = Convert.ToInt64(dt.Rows[0][0]) > 0; + Console.WriteLine($"initial table {tableName} exists {exists}"); + + if (!exists) + { + dbCon.Execute(string.Format("CREATE TABLE {0} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)", tableName), + default, TimeSpan.FromSeconds(10) + ); + } + + //Check again if table exists + (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName), + default, default); + exists = Convert.ToInt64(dt.Rows[0][0]) > 0; + Console.WriteLine($"after creation - table {tableName} exists {exists}"); + + //insert some data into the table + (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM {0}", tableName), default, default); + var firstId = int.Parse(dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : "0"); + + Console.WriteLine($"rows before the insertion {firstId}"); + + //create new datatable + // Create DataTable + var ndt = new System.Data.DataTable("dt"); + + // Add columns + ndt.Columns.Add("ID", typeof(decimal)); + ndt.Columns.Add("NAME", typeof(string)); + ndt.Columns.Add("CREATED_AT", typeof(System.DateTime)); + + for (int i = firstId+1; i <= firstId+10; i++) + { + ndt.Rows.Add(new object[] { i , Guid.NewGuid().ToString("N"), DateTime.Now}); + } + + dbCon.BulkInsertDataTable(tableName, ndt); + + (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM {0}", tableName), default, default); + Console.WriteLine($"rows after the insertion {int.Parse(dt.Rows[0][0].ToString())}"); + } + } +} \ No newline at end of file diff --git a/CodedDatabaseDemo/SqliteSimpleTests.xaml b/CodedDatabaseDemo/SqliteSimpleTests.xaml new file mode 100644 index 0000000..4b13e40 --- /dev/null +++ b/CodedDatabaseDemo/SqliteSimpleTests.xaml @@ -0,0 +1,466 @@ + + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Linq + System.Net.Mail + System.Xml + System.Text + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + System.Security + UiPath.Database + UiPath.Database.Activities + System.Reflection + System.Linq.Expressions + System.Runtime.Serialization + System.ComponentModel + System.Xml.Serialization + System.IO + System.Numerics + UiPath.Shared.Activities.Business + UiPath.Platform.ResourceHandling + UiPath.Shared.Activities + + + + + Microsoft.CSharp + Microsoft.VisualBasic + System + System.Activities + System.ComponentModel.TypeConverter + System.Core + System.Data + System.Data.Common + System.Linq + System.Net.Mail + System.ObjectModel + System.Private.CoreLib + System.Runtime.Serialization + System.ServiceModel + System.ServiceModel.Activities + System.Xaml + System.Xml + System.Xml.Linq + UiPath.System.Activities + UiPath.UiAutomation.Activities + UiPath.Studio.Constants + System.Security.Permissions + System.Runtime.InteropServices + UiPath.Database + UiPath.Database.Activities + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.Reflection.Metadata + UiPath.Presentations + NPOI + UiPath.Excel.Activities.Design + System.Console + System.Configuration.ConfigurationManager + System.ComponentModel + System.Memory + System.Private.Uri + System.Linq.Expressions + System.Private.ServiceModel + System.Private.DataContractSerialization + System.Runtime.Serialization.Formatters + System.Runtime.Serialization.Primitives + PresentationFramework + WindowsBase + System.ComponentModel.EventBasedAsync + System.ComponentModel.Primitives + System.Private.Xml + System.Data.SqlClient + System.Collections + System.Collections.NonGeneric + System.IO.FileSystem.Watcher + System.IO.Packaging + System.IO.FileSystem.AccessControl + System.IO.FileSystem.DriveInfo + System.Runtime.Numerics + UiPath.Presentations.Activities.Design + System.Memory.Data + UiPath.Presentations.Activities + UiPath.Excel.Activities + NPOI.Core + UiPath.Platform + UiPath.UIAutomationCore + UiPath.OCR.Activities + + + + + + + + + + + + + + True + + + + + + myDbCon + + + + + + + dt + + + + + myDbCon + + + + + tableName + + + + + string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName) + + + + + + + exists + + + + + Convert.ToInt64(dt.Rows[0][0]) > 0 + + + + + + $"initial table {tableName} exists {exists}" + + + + + + !exists + + + + + True + False + + + + + + + True + + + + + $"create table {tableName}" + + + + + + myDbCon + + + + + + + + string.Format("CREATE TABLE {0} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)", tableName) + + + + + + + + + + True + + + + + + + + + dt + + + + + myDbCon + + + + + tableName + + + + + string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName) + + + + + + + exists + + + + + Convert.ToInt64(dt.Rows[0][0]) > 0 + + + + + + $"after possible creation table {tableName} exists {exists}" + + + + + + + + + + + + + True + + + + + + dt + + + + + myDbCon + + + + + + + + string.Format("SELECT COUNT(*) FROM {0}", tableName) + + + + + + + firstId + + + + + int.Parse(dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : "0") + + + + + + $"firstId {firstId}" + + + + + + dt + + + + + + + dt + + + + + True + False + + + + + + + dt + + + + + dtText + + + + + + + dtText + + + + + + + + + + + + + True + + + + + + new object[] { CurrentItem, Guid.NewGuid().ToString("N"), DateTime.Now} + + + + + dt + + + + + + + + + firstId+1 + + + + + True + False + + + + + + + startOp + + + + + DateTime.Now + + + + + + + count64 + + + + + dt + + + + + myDbCon + + + + + tableName + + + + + + $"insert operation took {(DateTime.Now - startOp).TotalSeconds}, affected rows {count}, count64 {count64}" + + + + + + + + + True + + + + + + myDbCon + + + + + + + + string.Format("DROP TABLE {0}", tableName) + + + + + + + + False + False + + + + + + + myDbCon + + + + + \ No newline at end of file diff --git a/CodedDatabaseDemo/dt.txt b/CodedDatabaseDemo/dt.txt new file mode 100644 index 0000000..3aab5a0 --- /dev/null +++ b/CodedDatabaseDemo/dt.txt @@ -0,0 +1 @@ +ID,NAME,CREATED_AT diff --git a/CodedDatabaseDemo/entry-points.json b/CodedDatabaseDemo/entry-points.json new file mode 100644 index 0000000..811f50e --- /dev/null +++ b/CodedDatabaseDemo/entry-points.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://cloud.uipath.com/draft/2024-12/entry-point", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "e683d208-852d-414b-9bf3-3d417ddce6fa", + "type": "process" + }, + { + "filePath": "SqliteCodedTests.cs", + "uniqueId": "0dfb99a0-f524-48a3-83b2-e90a679d9aee", + "type": "process" + } + ] +} \ No newline at end of file diff --git a/CodedDatabaseDemo/mySqlite.db b/CodedDatabaseDemo/mySqlite.db new file mode 100644 index 0000000000000000000000000000000000000000..3d637731424b975ccb6fd61875830bca21cb66d3 GIT binary patch literal 12288 zcmeHKJ#3vx6@C7R?ZkGRz(N*S*au-DfyB(rz4P~2GML0bL>%pU9f=gHWqzea{75T{ zf&yt<3JMAe3M3>X3JMAe3JOXJ3JN4BR-!-@2vJaML9qpA-mdrgIer}t=zEgmFSh4= z_nv$1J$GJu@xiOdb=48#fAD?j)bpap ztE1iak8S*RdFRWcoj>89;WIEWFfcGMFfcGMFfcGMFfcGMFfcGMFfcIiKg_`Eo6GCh zu3ukz{pI7BzEKYzAML+%bhP({2m7ZUSMDC}?;Y)rr#~N``o;Lh`2M}|{f9^UU)nz$ zzi@c}VDIqp_$&L5Z;c=B9pJ$JSC4Lu-#&fsmA#|s561WQzqt44!O{5cqr=1fhexj* z-9Nxf_YPjTd1Gnq+Ro0>-ZYlukE5zy0s+UvGbBTW`I& z^{cJdw&do&Hh;PKt-taEzqbDD z+F#awvi9=YGZ)^t@Z$@QFFd{a=hYvrK3aWh<&P^rTzPTj%JLtUf3SS8ytVZErSC7@ zU)sQn|2v=X{Oai7F4fjtE|z>Utc3F^l6O&3txgrAl~Crk;M>ZNrJG1S5pq{5A=$|A z*$$9mszy3jv~paObHWQ|8;ejXk%8*a_`s+zY8NmN<} zJ&nLHm~Tk9IFzQQD8ar>6iE>4g%L>Rz#V{Ds)|Y|WgA!Ly-hJAD7IQEw@?Sd8y~0x zB>*Fmiqh#;WkC4p5|uCJKeD zBS&pqa>8k@#TgT;T?oKRhnv$B8X#;_g;eZHjII^LEvk&xYPBc@A+!!RIzY;m+2QS_ zXtu>BlvN2dBu0)Zjh;w>%`Pe=B~tig2bjLhlvs?i++vOzgqW(5C~YCPmnx*x5uI&fQYnd;sF209 z%L@Ql+wk#e0LjYit1Mh1Lr}h1(IN|{FzmHU3(hNTeYoBMNPEbiFp=4EQraVyA_!en zF=pkHReYNQf%zLg)&aCY{1r!7Kt~1CNOZEroQ<9&RC!iMQvmCfr|{7Z;3T-x`19g1 z<$S_CgSm)oJ;cs&K^3ib?8CSN803I{M*n%{R-Ho&=-jl54Z?cD+1{z5RSrY>*$$Ar zH<%^NT+rC09UQg^qtKZd{Zh_P0SXoR&PM>Sr>c^gk!>}Og>c=WD4E8x6M3o?+*rzq zwiB&(jnm5Toe%f(gt;B9E)m_&nv%mKW@BnHaYU`(4PgGf6gE6FO#lpNLDa124Je`` zo586!%8@GM9<>Th(#ri*@{ z9N`fnW5VTHOyOA>=K(N3Y}lRxp!HFfL@;#BS#l10I`(&;1(pOm>&AHiMVi7^2goRZ zr|2<`F^^(Sa2!To%j`(Qz|ZHvfp!X;9Uyv?T4tD$jGSeOrmw3x!(-4JFxqoTv~V#K zE_DFm(2oV%VMCyRIz7OVvTgt;EpI)KMwOR`CJ*`S%KcYUT7?3o%Kfvw>biKik^5>md< z0V*8K^aZnDbF52fAt_rd*c#zZZczjRH4dvCAZjZiW*h`&N)4Mk%u!+4$33vM1sp)} zR)&>n1eI~Y#I9e9W%M2}5Oh{Cs$!#@IpbUvq_Nm@mpcINt69O13odSb&-K{1wRK1d ul`VZ;duPj>2VjZyVyOdQ1e=6At}L!ViG5qarY0ROe2U8XLQ>wd7y3VNEZKSh literal 0 HcmV?d00001 diff --git a/CodedDatabaseDemo/project.json b/CodedDatabaseDemo/project.json new file mode 100644 index 0000000..6b76236 --- /dev/null +++ b/CodedDatabaseDemo/project.json @@ -0,0 +1,64 @@ +{ + "name": "DatabaseCodedDemo", + "projectId": "1b1c2f4a-c680-4f50-bd25-6ffa5da93672", + "description": "Sample on how to use database activities coded API", + "main": "Main.xaml", + "dependencies": { + "UiPath.Database.Activities": "[2.1.0-preview]", + "UiPath.System.Activities": "[26.2.4]" + }, + "webServices": [], + "entitiesStores": [], + "schemaVersion": "4.0", + "studioVersion": "26.0.193.0", + "projectVersion": "1.0.0", + "runtimeOptions": { + "autoDispose": false, + "netFrameworkLazyLoading": false, + "isPausable": true, + "isAttended": false, + "requiresUserInteraction": true, + "supportsPersistence": false, + "workflowSerialization": "NewtonsoftJson", + "excludedLoggedData": [ + "Private:*", + "*password*" + ], + "executionType": "Workflow", + "readyForPiP": false, + "startsInPiP": false, + "mustRestoreAllDependencies": true, + "pipType": "ChildSession" + }, + "designOptions": { + "projectProfile": "Developement", + "outputType": "Process", + "libraryOptions": { + "privateWorkflows": [] + }, + "processOptions": { + "ignoredFiles": [] + }, + "fileInfoCollection": [], + "saveToCloud": false + }, + "expressionLanguage": "CSharp", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "e683d208-852d-414b-9bf3-3d417ddce6fa", + "input": [], + "output": [] + }, + { + "filePath": "SqliteCodedTests.cs", + "uniqueId": "0dfb99a0-f524-48a3-83b2-e90a679d9aee", + "input": [], + "output": [] + } + ], + "isTemplate": false, + "templateProjectData": {}, + "publishData": {}, + "targetFramework": "Windows" +} \ No newline at end of file diff --git a/CodedDatabaseDemo/project.uiproj b/CodedDatabaseDemo/project.uiproj new file mode 100644 index 0000000..b3e0f4b --- /dev/null +++ b/CodedDatabaseDemo/project.uiproj @@ -0,0 +1,6 @@ +{ + "Name": "DatabaseCodedDemo", + "ProjectType": "Process", + "Description": "Sample on how to use database activities coded API", + "MainFile": "Main.xaml" +} \ No newline at end of file diff --git a/CodedFTPDemo/.codedworkflows/ConnectionsFactory.cs b/CodedFTPDemo/.codedworkflows/ConnectionsFactory.cs new file mode 100644 index 0000000..1ba043e --- /dev/null +++ b/CodedFTPDemo/.codedworkflows/ConnectionsFactory.cs @@ -0,0 +1,3 @@ +namespace CodedFTPDemo +{ +} \ No newline at end of file diff --git a/CodedFTPDemo/.codedworkflows/ConnectionsManager.cs b/CodedFTPDemo/.codedworkflows/ConnectionsManager.cs new file mode 100644 index 0000000..227a43d --- /dev/null +++ b/CodedFTPDemo/.codedworkflows/ConnectionsManager.cs @@ -0,0 +1,12 @@ +using UiPath.CodedWorkflows; +using System; + +namespace CodedFTPDemo +{ + public class ConnectionsManager + { + public ConnectionsManager(ICodedWorkflowsServiceContainer resolver) + { + } + } +} \ No newline at end of file diff --git a/CodedFTPDemo/.objects/.metadata b/CodedFTPDemo/.objects/.metadata new file mode 100644 index 0000000..78a6e3e --- /dev/null +++ b/CodedFTPDemo/.objects/.metadata @@ -0,0 +1,9 @@ +{ + "Type": "Library", + "Id": "l2JKkGXATUG-iX5xuEPLDQ", + "Created": "2026-04-29T15:48:13.451611Z", + "Updated": "2026-04-29T15:48:13.451611Z", + "CreatedBy": [ + "UiPath.Platform, Version=24.11.1.0, Culture=neutral, PublicKeyToken=null" + ] +} \ No newline at end of file diff --git a/CodedFTPDemo/.objects/.type b/CodedFTPDemo/.objects/.type new file mode 100644 index 0000000..729bdde --- /dev/null +++ b/CodedFTPDemo/.objects/.type @@ -0,0 +1 @@ +Library \ No newline at end of file diff --git a/CodedFTPDemo/.project/PackageBindingsMetadata.json b/CodedFTPDemo/.project/PackageBindingsMetadata.json new file mode 100644 index 0000000..3289853 --- /dev/null +++ b/CodedFTPDemo/.project/PackageBindingsMetadata.json @@ -0,0 +1,807 @@ +{ + "ActivityBindings": { + "UiPath.Activities.System.Jobs.RunJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddAndProcessQueueItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.AddQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.AddTransactionItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.BeginProcess": [ + { + "Type": "process", + "Values": { + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.BulkAddQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.DeleteQueueItems": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.EvaluateBusinessRule": [ + { + "Type": "businessRule", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "BusinessRule", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetJobs": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.GetQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueType", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetQueueItems": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetRobotCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.GetTransactionItem": [ + { + "Type": "queue", + "Values": { + "name": { + "Value": "QueueType", + "ValueSource": "Property" + }, + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.InvokeProcess": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.PostponeTransactionItem": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.QueueTrigger": [ + { + "Type": "QueueTrigger", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "ItemsActivationThreshold": { + "Value": "ItemsActivationThreshold", + "ValueSource": "Property" + }, + "ItemsPerJobActivationTarget": { + "Value": "ItemsPerJobActivationTarget", + "ValueSource": "Property" + }, + "MaxJobsForActivation": { + "Value": "MaxJobsForActivation", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetAsset": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetCredential": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "CredentialName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetSecret": [ + { + "Type": "asset", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "AssetName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.SetTransactionProgress": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.SetTransactionStatus": [ + { + "Type": "queue", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.StartJob": [ + { + "Type": "process", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "ProcessName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.StopJob": [ + { + "Type": "process", + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + } + }, + "DefaultValueSource": "Default" + } + ], + "UiPath.Core.Activities.Storage.DeleteStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.DownloadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ListStorageFiles": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.ReadStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.UploadStorageFile": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.Storage.WriteStorageText": [ + { + "Type": "bucket", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "StorageBucketName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.TimeTrigger": [ + { + "Type": "TimeTrigger", + "PublishNullValues": false, + "Key": { + "Value": "N/A", + "ValueSource": "Property" + }, + "Values": {}, + "Arguments": { + "TimeZone": { + "Value": "TimeZone", + "ValueSource": "Property" + }, + "CronExpression": { + "Value": "CronExpression", + "ValueSource": "Property" + }, + "BindingsVersion": { + "Value": "2.1", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ], + "UiPath.Core.Activities.WaitQueueItem": [ + { + "Type": "queue", + "PublishNullValues": false, + "Key": { + "Value": "BindingsKey", + "ValueSource": "Property" + }, + "Values": { + "folderPath": { + "Value": "FolderPath", + "ValueSource": "Property" + }, + "name": { + "Value": "QueueName", + "ValueSource": "Property" + } + }, + "Arguments": { + "BindingsVersion": { + "Value": "2.2", + "ValueSource": "Constant" + } + }, + "SubBindings": [], + "DefaultValueSource": "Property" + } + ] + } +} \ No newline at end of file diff --git a/CodedFTPDemo/.project/design.json b/CodedFTPDemo/.project/design.json new file mode 100644 index 0000000..206a9f3 --- /dev/null +++ b/CodedFTPDemo/.project/design.json @@ -0,0 +1,6 @@ +{ + "Tags": [], + "SeparateRuntimeDependencies": true, + "IncludeSources": true, + "ConnectorKeys": [] +} \ No newline at end of file diff --git a/CodedFTPDemo/CodedTests.cs b/CodedFTPDemo/CodedTests.cs new file mode 100644 index 0000000..99ddb9d --- /dev/null +++ b/CodedFTPDemo/CodedTests.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Data; +using UiPath.CodedWorkflows; +using UiPath.Core; +using UiPath.Core.Activities.Storage; +using UiPath.Excel; +using UiPath.Excel.Activities; +using UiPath.Excel.Activities.API; +using UiPath.Excel.Activities.API.Models; +using UiPath.FTP; +using UiPath.FTP.Activities; +using UiPath.FTP.Activities.API; +using UiPath.FTP.Activities.API.Models; +using UiPath.Orchestrator.Client.Models; +using System.Linq; + +namespace CodedFTPDemo +{ + public class CodedTests : CodedWorkflow + { + [Workflow] + public async System.Threading.Tasks.Task ExecuteAsync() + { + // To start using services, use IntelliSense (CTRL + Space) to discover the available services: + // e.g. system.GetAsset(...) + + // For accessing UI Elements from Object Repository, you can use the Descriptors class e.g: + // var screen = uiAutomation.Open(Descriptors.MyApp.FirstScreen); + // screen.Click(Descriptors.MyApp.FirstScreen.SettingsButton); + + //create a ftp session using proper credentials + string host = "Ubuntu64"; + string user = "ftpuser"; + string pass = "somepass"; + + await using var session = await ftp.UseFtpSession(new FtpScopeOptions() { + Host = host, + Username = user, + Password = pass, + UseSftp = true + }); + + var fileName = "1.txt"; + var exists = await session.FileExists(fileName); + Console.WriteLine($"file {fileName} exists {exists}"); + + fileName = "/home/ftpuser/image.png"; + exists = await session.FileExists(fileName); + Console.WriteLine($"file {fileName} exists {exists}"); + + Console.WriteLine("List all files in the current remote directory"); + var files = await session.EnumerateObjects(".", true); + var filesList = files.ToList(); + foreach (var f in filesList) + { + Console.WriteLine($"{f.FullName}"); + } + + Console.WriteLine($"we found {filesList.Where(x => x.Type == FtpObjectType.Directory).Count()} directories"); + Console.WriteLine($"we found {filesList.Where(x => x.Type == FtpObjectType.Link).Count()} links"); + + //download some file from the FTP server + await session.DownloadFiles("/home/ftpuser/image.png", "remoteImg.png", true); + } + + } +} \ No newline at end of file diff --git a/CodedFTPDemo/CodedTests.cs.json b/CodedFTPDemo/CodedTests.cs.json new file mode 100644 index 0000000..455b5a7 --- /dev/null +++ b/CodedFTPDemo/CodedTests.cs.json @@ -0,0 +1,21 @@ +{ + "DisplayName": "CodedTests", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "Output", + "DisplayName": "Output", + "Category": null, + "Tooltip": null, + "Placeholder": null, + "Widget": null, + "IsRequired": true, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedFTPDemo/Main.xaml b/CodedFTPDemo/Main.xaml new file mode 100644 index 0000000..4583857 --- /dev/null +++ b/CodedFTPDemo/Main.xaml @@ -0,0 +1,203 @@ + + + + + + + + + + 1060,1912.8 + ActivityBuilder_1 + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + UiPath.FTP + System.Security + UiPath.FTP.Enums + UiPath.FTP.Activities + UiPath.Shared.Activities + System.Reflection + System.Linq.Expressions + System.Runtime.Serialization + System.ComponentModel + System.Xml.Serialization + UiPath.Platform.ResourceHandling + + + + + Microsoft.VisualBasic + mscorlib + PresentationCore + PresentationFramework + System + System.Activities + System.ComponentModel.TypeConverter + System.Core + System.Data + System.Data.Common + System.Data.DataSetExtensions + System.Drawing + System.Drawing.Common + System.Drawing.Primitives + System.Linq + System.Net.Mail + System.ObjectModel + System.Private.CoreLib + System.Xaml + System.Xml + System.Xml.Linq + UiPath.System.Activities + UiPath.UiAutomation.Activities + WindowsBase + UiPath.Studio.Constants + UiPath.FTP + System.Security.Permissions + System.Runtime.InteropServices + UiPath.FTP.Activities + UiPath.Excel.Activities + UiPath.Mail.Activities + UiPath.OCR.Activities + UiPath.Testing.Activities + UiPath.UIAutomationCore + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.Reflection.Metadata + UiPath.Excel.Activities.Design + NPOI + System.Console + System.Configuration.ConfigurationManager + System.ComponentModel + System.Memory + System.Private.Uri + System.Private.ServiceModel + System.Collections + System.Collections.NonGeneric + System.Linq.Expressions + System.Runtime.Serialization.Formatters + System.Private.DataContractSerialization + System.Runtime.Serialization.Primitives + System.CodeDom + Microsoft.VisualBasic.Forms + Microsoft.VisualBasic.Core + System.ComponentModel.EventBasedAsync + System.ComponentModel.Primitives + System.Private.Xml + UiPath.Platform + CodedFTPDemo.Core + + + + + + True + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + True + + + + + + + + False + False + + + + + + + + + True + + + + + + + + False + False + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + \ No newline at end of file diff --git a/CodedFTPDemo/Main.xaml.json b/CodedFTPDemo/Main.xaml.json new file mode 100644 index 0000000..49b54ec --- /dev/null +++ b/CodedFTPDemo/Main.xaml.json @@ -0,0 +1,45 @@ +{ + "DisplayName": "Main", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "pwd", + "DisplayName": "pwd", + "Category": null, + "Tooltip": null, + "Placeholder": "_Ab123456", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + }, + { + "Name": "user", + "DisplayName": "user", + "Category": null, + "Tooltip": null, + "Placeholder": "ftpuser", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + }, + { + "Name": "host", + "DisplayName": "host", + "Category": null, + "Tooltip": null, + "Placeholder": "172.30.33.137", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedFTPDemo/entry-points.json b/CodedFTPDemo/entry-points.json new file mode 100644 index 0000000..8db9336 --- /dev/null +++ b/CodedFTPDemo/entry-points.json @@ -0,0 +1,1971 @@ +{ + "$schema": "https://cloud.uipath.com/draft/2024-12/entry-point", + "entryPoints": [ + { + "filePath": "CodedTests.cs", + "uniqueId": "495cf568-bcf8-4c51-954a-0065d6d21c4e", + "type": "process", + "output": { + "type": "object", + "properties": { + "Output": { + "type": "object", + "properties": { + "Id": { + "$ref": "#/$defs/integer" + }, + "Exception": { + "type": "object", + "properties": { + "TargetSite": { + "$ref": "#/$defs/methodBase" + }, + "Data": { + "$ref": "#/$defs/iDictionary" + }, + "InnerException": { + "$ref": "#/$defs/exception" + }, + "HelpLink": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "HResult": { + "$ref": "#/$defs/integer1" + }, + "StackTrace": { + "$ref": "#/$defs/string" + }, + "InnerExceptions": { + "$ref": "#/$defs/readOnlyCollectionOfException" + }, + "Message": { + "$ref": "#/$defs/string" + } + }, + "readOnly": true + }, + "Status": { + "enum": [ + "Created", + "WaitingForActivation", + "WaitingToRun", + "Running", + "WaitingForChildrenToComplete", + "RanToCompletion", + "Canceled", + "Faulted" + ], + "readOnly": true + }, + "IsCanceled": { + "$ref": "#/$defs/boolean" + }, + "IsCompleted": { + "$ref": "#/$defs/boolean" + }, + "IsCompletedSuccessfully": { + "$ref": "#/$defs/boolean" + }, + "CreationOptions": { + "enum": [ + "None", + "PreferFairness", + "LongRunning", + "AttachedToParent", + "DenyChildAttach", + "HideScheduler", + "RunContinuationsAsynchronously" + ], + "readOnly": true + }, + "AsyncState": { + "$ref": "#/$defs/object" + }, + "IsFaulted": { + "$ref": "#/$defs/boolean" + } + }, + "$defs": { + "integer": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647, + "readOnly": true + }, + "integer1": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "methodBase": { + "type": "object", + "properties": { + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "memberTypes": { + "enum": [ + "Constructor", + "Event", + "Field", + "Method", + "Property", + "TypeInfo", + "Custom", + "NestedType", + "All" + ], + "readOnly": true + }, + "string": { + "type": "string", + "readOnly": true, + "deprecated": true + }, + "type": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "type1": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + } + } + }, + "arrayOfCustomAttributeData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "AttributeType": { + "$ref": "#/$defs/type" + }, + "Constructor": { + "$ref": "#/$defs/constructorInfo" + }, + "ConstructorArguments": { + "$ref": "#/$defs/iListOfCustomAttributeTypedArgument" + }, + "NamedArguments": { + "$ref": "#/$defs/iListOfCustomAttributeNamedArgument" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "constructorInfo": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + } + }, + "readOnly": true + }, + "module": { + "type": "object", + "properties": { + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "FullyQualifiedName": { + "$ref": "#/$defs/string" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "MDStreamVersion": { + "$ref": "#/$defs/integer" + }, + "ModuleVersionId": { + "$ref": "#/$defs/guid" + }, + "ScopeName": { + "$ref": "#/$defs/string" + }, + "ModuleHandle": { + "$ref": "#/$defs/moduleHandle" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "assembly": { + "type": "object", + "properties": { + "DefinedTypes": { + "$ref": "#/$defs/arrayOfTypeInfo" + }, + "ExportedTypes": { + "$ref": "#/$defs/arrayOfType1" + }, + "CodeBase": { + "$ref": "#/$defs/string" + }, + "EntryPoint": { + "$ref": "#/$defs/methodInfo" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "ImageRuntimeVersion": { + "$ref": "#/$defs/string" + }, + "IsDynamic": { + "$ref": "#/$defs/boolean" + }, + "Location": { + "$ref": "#/$defs/string" + }, + "ReflectionOnly": { + "$ref": "#/$defs/boolean" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "IsFullyTrusted": { + "$ref": "#/$defs/boolean" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "EscapedCodeBase": { + "$ref": "#/$defs/string" + }, + "ManifestModule": { + "$ref": "#/$defs/module" + }, + "Modules": { + "$ref": "#/$defs/arrayOfModule" + }, + "GlobalAssemblyCache": { + "$ref": "#/$defs/boolean" + }, + "HostContext": { + "$ref": "#/$defs/integer2" + }, + "SecurityRuleSet": { + "$ref": "#/$defs/securityRuleSet" + } + }, + "readOnly": true + }, + "arrayOfTypeInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeParameters": { + "$ref": "#/$defs/arrayOfType" + }, + "DeclaredConstructors": { + "$ref": "#/$defs/arrayOfConstructorInfo" + }, + "DeclaredEvents": { + "$ref": "#/$defs/arrayOfEventInfo" + }, + "DeclaredFields": { + "$ref": "#/$defs/arrayOfFieldInfo" + }, + "DeclaredMembers": { + "$ref": "#/$defs/arrayOfMemberInfo" + }, + "DeclaredMethods": { + "$ref": "#/$defs/arrayOfMethodInfo" + }, + "DeclaredNestedTypes": { + "$ref": "#/$defs/arrayOfTypeInfo" + }, + "DeclaredProperties": { + "$ref": "#/$defs/arrayOfPropertyInfo" + }, + "ImplementedInterfaces": { + "$ref": "#/$defs/arrayOfType1" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "boolean": { + "type": "boolean", + "readOnly": true, + "deprecated": true + }, + "arrayOfType": { + "type": "array", + "items": { + "$ref": "#/$defs/type" + }, + "readOnly": true + }, + "genericParameterAttributes": { + "enum": [ + "None", + "Covariant", + "Contravariant", + "VarianceMask", + "ReferenceTypeConstraint", + "NotNullableValueTypeConstraint", + "DefaultConstructorConstraint", + "SpecialConstraintMask" + ], + "readOnly": true + }, + "typeAttributes": { + "enum": [ + "NotPublic", + "AutoLayout", + "AnsiClass", + "Class", + "Public", + "NestedPublic", + "NestedPrivate", + "NestedFamily", + "NestedAssembly", + "NestedFamANDAssem", + "VisibilityMask", + "NestedFamORAssem", + "SequentialLayout", + "ExplicitLayout", + "LayoutMask", + "Interface", + "ClassSemanticsMask", + "Abstract", + "Sealed", + "SpecialName", + "RTSpecialName", + "Import", + "Serializable", + "WindowsRuntime", + "UnicodeClass", + "AutoClass", + "StringFormatMask", + "CustomFormatClass", + "HasSecurity", + "ReservedMask", + "BeforeFieldInit", + "CustomFormatMask" + ], + "readOnly": true + }, + "structLayoutAttribute": { + "type": "object", + "properties": { + "TypeId": { + "$ref": "#/$defs/object" + }, + "Pack": { + "$ref": "#/$defs/integer1" + }, + "Size": { + "$ref": "#/$defs/integer1" + }, + "CharSet": { + "enum": [ + "None", + "Ansi", + "Unicode", + "Auto" + ] + }, + "Value": { + "$ref": "#/$defs/layoutKind" + } + }, + "readOnly": true + }, + "object": { + "type": "object", + "readOnly": true + }, + "layoutKind": { + "enum": [ + "Sequential", + "Explicit", + "Auto" + ], + "readOnly": true + }, + "runtimeTypeHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "intPtr": { + "type": "object", + "readOnly": true + }, + "guid": { + "type": "string", + "format": "uuid", + "readOnly": true + }, + "arrayOfConstructorInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/constructorInfo" + }, + "readOnly": true + }, + "arrayOfEventInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Attributes": { + "$ref": "#/$defs/eventAttributes" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "AddMethod": { + "$ref": "#/$defs/methodInfo" + }, + "RemoveMethod": { + "$ref": "#/$defs/methodInfo" + }, + "RaiseMethod": { + "$ref": "#/$defs/methodInfo" + }, + "IsMulticast": { + "$ref": "#/$defs/boolean" + }, + "EventHandlerType": { + "$ref": "#/$defs/type" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "eventAttributes": { + "enum": [ + "None", + "SpecialName", + "RTSpecialName", + "ReservedMask" + ], + "readOnly": true + }, + "methodInfo": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "ReturnParameter": { + "$ref": "#/$defs/parameterInfo" + }, + "ReturnType": { + "$ref": "#/$defs/type" + }, + "ReturnTypeCustomAttributes": { + "$ref": "#/$defs/iCustomAttributeProvider" + } + }, + "readOnly": true + }, + "methodAttributes": { + "enum": [ + "PrivateScope", + "ReuseSlot", + "Private", + "FamANDAssem", + "Assembly", + "Family", + "FamORAssem", + "Public", + "MemberAccessMask", + "UnmanagedExport", + "Static", + "Final", + "Virtual", + "HideBySig", + "NewSlot", + "VtableLayoutMask", + "CheckAccessOnOverride", + "Abstract", + "SpecialName", + "RTSpecialName", + "PinvokeImpl", + "HasSecurity", + "RequireSecObject", + "ReservedMask" + ], + "readOnly": true + }, + "methodImplAttributes": { + "enum": [ + "IL", + "Managed", + "Native", + "OPTIL", + "CodeTypeMask", + "Runtime", + "ManagedMask", + "Unmanaged", + "NoInlining", + "ForwardRef", + "Synchronized", + "NoOptimization", + "PreserveSig", + "AggressiveInlining", + "AggressiveOptimization", + "InternalCall", + "MaxMethodImplVal" + ], + "readOnly": true + }, + "callingConventions": { + "enum": [ + "Standard", + "VarArgs", + "Any", + "HasThis", + "ExplicitThis" + ], + "readOnly": true + }, + "runtimeMethodHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "parameterInfo": { + "type": "object", + "properties": { + "Attributes": { + "$ref": "#/$defs/parameterAttributes" + }, + "Member": { + "$ref": "#/$defs/memberInfo" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "ParameterType": { + "$ref": "#/$defs/type" + }, + "Position": { + "$ref": "#/$defs/integer" + }, + "IsIn": { + "$ref": "#/$defs/boolean" + }, + "IsLcid": { + "$ref": "#/$defs/boolean" + }, + "IsOptional": { + "$ref": "#/$defs/boolean" + }, + "IsOut": { + "$ref": "#/$defs/boolean" + }, + "IsRetval": { + "$ref": "#/$defs/boolean" + }, + "DefaultValue": { + "$ref": "#/$defs/object" + }, + "RawDefaultValue": { + "$ref": "#/$defs/object" + }, + "HasDefaultValue": { + "$ref": "#/$defs/boolean" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "parameterAttributes": { + "enum": [ + "None", + "In", + "Out", + "Lcid", + "Retval", + "Optional", + "HasDefault", + "HasFieldMarshal", + "Reserved3", + "Reserved4", + "ReservedMask" + ], + "readOnly": true + }, + "memberInfo": { + "type": "object", + "properties": { + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "iCustomAttributeProvider": { + "type": "object", + "readOnly": true + }, + "arrayOfFieldInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Attributes": { + "$ref": "#/$defs/fieldAttributes" + }, + "FieldType": { + "$ref": "#/$defs/type" + }, + "IsInitOnly": { + "$ref": "#/$defs/boolean" + }, + "IsLiteral": { + "$ref": "#/$defs/boolean" + }, + "IsNotSerialized": { + "$ref": "#/$defs/boolean" + }, + "IsPinvokeImpl": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "FieldHandle": { + "$ref": "#/$defs/runtimeFieldHandle" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "fieldAttributes": { + "enum": [ + "PrivateScope", + "Private", + "FamANDAssem", + "Assembly", + "Family", + "FamORAssem", + "Public", + "FieldAccessMask", + "Static", + "InitOnly", + "Literal", + "NotSerialized", + "HasFieldRVA", + "SpecialName", + "RTSpecialName", + "HasFieldMarshal", + "PinvokeImpl", + "HasDefault", + "ReservedMask" + ], + "readOnly": true + }, + "runtimeFieldHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "arrayOfMemberInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/memberInfo" + }, + "readOnly": true + }, + "arrayOfMethodInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/methodInfo" + }, + "readOnly": true + }, + "arrayOfPropertyInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "PropertyType": { + "$ref": "#/$defs/type" + }, + "Attributes": { + "$ref": "#/$defs/propertyAttributes" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "CanRead": { + "$ref": "#/$defs/boolean" + }, + "CanWrite": { + "$ref": "#/$defs/boolean" + }, + "GetMethod": { + "$ref": "#/$defs/methodInfo" + }, + "SetMethod": { + "$ref": "#/$defs/methodInfo" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "propertyAttributes": { + "enum": [ + "None", + "SpecialName", + "RTSpecialName", + "HasDefault", + "Reserved2", + "Reserved3", + "Reserved4", + "ReservedMask" + ], + "readOnly": true + }, + "arrayOfType1": { + "type": "array", + "items": { + "$ref": "#/$defs/type" + }, + "readOnly": true + }, + "arrayOfModule": { + "type": "array", + "items": { + "$ref": "#/$defs/module" + }, + "readOnly": true + }, + "integer2": { + "type": "integer", + "minimum": -9223372036854775808, + "maximum": 9223372036854775807, + "readOnly": true + }, + "securityRuleSet": { + "enum": [ + "None", + "Level1", + "Level2" + ], + "readOnly": true + }, + "moduleHandle": { + "type": "object", + "properties": { + "MDStreamVersion": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "iListOfCustomAttributeTypedArgument": { + "type": "array", + "items": { + "$ref": "#/$defs/customAttributeTypedArgument" + }, + "readOnly": true + }, + "customAttributeTypedArgument": { + "type": "object", + "properties": { + "ArgumentType": { + "$ref": "#/$defs/type" + }, + "Value": { + "$ref": "#/$defs/object" + } + }, + "readOnly": true + }, + "iListOfCustomAttributeNamedArgument": { + "type": "array", + "items": { + "type": "object", + "properties": { + "MemberInfo": { + "$ref": "#/$defs/memberInfo" + }, + "TypedValue": { + "$ref": "#/$defs/customAttributeTypedArgument" + }, + "MemberName": { + "$ref": "#/$defs/string" + }, + "IsField": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "iDictionary": { + "type": "array", + "readOnly": true + }, + "exception": { + "type": "object", + "properties": { + "TargetSite": { + "$ref": "#/$defs/methodBase" + }, + "Message": { + "$ref": "#/$defs/string" + }, + "Data": { + "$ref": "#/$defs/iDictionary" + }, + "InnerException": { + "$ref": "#/$defs/exception" + }, + "HelpLink": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "HResult": { + "$ref": "#/$defs/integer1" + }, + "StackTrace": { + "$ref": "#/$defs/string" + } + }, + "readOnly": true + }, + "readOnlyCollectionOfException": { + "type": "array", + "items": { + "$ref": "#/$defs/exception" + }, + "readOnly": true + } + } + } + } + } + }, + { + "filePath": "Main.xaml", + "uniqueId": "e5f7f215-78dc-43b0-9112-fe4d0bf6af27", + "type": "process", + "input": { + "type": "object", + "properties": { + "pwd": { + "type": "string", + "x-default-expression": "\"xxxPass\"", + "default": "xxxPass" + }, + "user": { + "type": "string", + "x-default-expression": "\"ftpuser\"", + "default": "ftpuser" + }, + "host": { + "type": "string", + "x-default-expression": "\"Ubuntu64\"", + "default": "Ubuntu64" + } + }, + "required": [] + } + } + ] +} \ No newline at end of file diff --git a/CodedFTPDemo/project.json b/CodedFTPDemo/project.json new file mode 100644 index 0000000..90f3367 --- /dev/null +++ b/CodedFTPDemo/project.json @@ -0,0 +1,65 @@ +{ + "name": "CodedFTPDemo", + "projectId": "59a1da51-5871-4422-87c9-339d0a6a96e6", + "description": "Sample of coded ftp", + "main": "Main.xaml", + "dependencies": { + "UiPath.Excel.Activities": "[3.5.1]", + "UiPath.FTP.Activities": "[3.1.1-preview]", + "UiPath.System.Activities": "[26.2.4]" + }, + "webServices": [], + "entitiesStores": [], + "schemaVersion": "4.0", + "studioVersion": "26.0.193.0", + "projectVersion": "1.0.0", + "runtimeOptions": { + "autoDispose": false, + "netFrameworkLazyLoading": false, + "isPausable": true, + "isAttended": false, + "requiresUserInteraction": true, + "supportsPersistence": false, + "workflowSerialization": "NewtonsoftJson", + "excludedLoggedData": [ + "Private:*", + "*password*" + ], + "executionType": "Workflow", + "readyForPiP": false, + "startsInPiP": false, + "mustRestoreAllDependencies": true, + "pipType": "ChildSession" + }, + "designOptions": { + "projectProfile": "Developement", + "outputType": "Process", + "libraryOptions": { + "privateWorkflows": [] + }, + "processOptions": { + "ignoredFiles": [] + }, + "fileInfoCollection": [], + "saveToCloud": false + }, + "expressionLanguage": "VisualBasic", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "e5f7f215-78dc-43b0-9112-fe4d0bf6af27", + "input": [], + "output": [] + }, + { + "filePath": "CodedTests.cs", + "uniqueId": "495cf568-bcf8-4c51-954a-0065d6d21c4e", + "input": [], + "output": [] + } + ], + "isTemplate": false, + "templateProjectData": {}, + "publishData": {}, + "targetFramework": "Windows" +} \ No newline at end of file diff --git a/CodedFTPDemo/project.uiproj b/CodedFTPDemo/project.uiproj new file mode 100644 index 0000000..e5df2c2 --- /dev/null +++ b/CodedFTPDemo/project.uiproj @@ -0,0 +1,6 @@ +{ + "Name": "CodedFTPDemo", + "ProjectType": "Process", + "Description": "Sample of coded ftp", + "MainFile": "Main.xaml" +} \ No newline at end of file diff --git a/CodedFTPDemo/remoteImg.png b/CodedFTPDemo/remoteImg.png new file mode 100644 index 0000000000000000000000000000000000000000..a30474fc090d7bdf0ef34efbf1a221aea97ef079 GIT binary patch literal 152115 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

vfIuwo|~wn*n{Bmhof{EN_sEOqK0e24?6iR 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 + + + + + + + 1203.2,2251.2 + JavaActivities_1 + + + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Activities + System.Activities.Expressions + System.Activities.Statements + System.Activities.Validation + System.Activities.XamlIntegration + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Windows.Markup + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + UiPath.Java + GlobalVariablesNamespace + GlobalConstantsNamespace + System.Linq.Expressions + System.Runtime.Serialization + System.Numerics + System.Reflection + + + + + Microsoft.VisualBasic + mscorlib + PresentationCore + PresentationFramework + System + System.Activities + System.Collections + System.ComponentModel.TypeConverter + System.Core + System.Data + System.Drawing + System.Linq + System.ObjectModel + System.Private.CoreLib + System.ServiceModel + System.ValueTuple + System.Xaml + System.Xml + System.Xml.Linq + UiPath.Java + UiPath.Java.Activities + UiPath.System.Activities + UiPath.Workflow + WindowsBase + System.Console + System.Security.Permissions + System.Configuration.ConfigurationManager + System.ComponentModel + System.Memory + System.Private.Uri + System.Linq.Expressions + System.Private.ServiceModel + System.Private.DataContractSerialization + System.Runtime.Serialization.Formatters + System.Runtime.Serialization.Primitives + System.Runtime.Numerics + UiPath.Studio.Constants + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.Reflection.Metadata + System.Reflection.MetadataLoadContext + Microsoft.Extensions.DependencyModel + System.Collections.NonGeneric + + + + + + True + True + + + + + + + + + + + + + + + + + + True + + + + + + True + + + + + + + + + + True + True + False + + + + + + + + + True + + + + + + + True + + + + + + + + + + + + + True + + + + + + + + + False + False + True + + + + + + + + True + False + True + + + + + + 200 + [5.5F] + + + + + True + + + + + + + + + + True + + + + + + + True + + + + + + + True + + + + + + + + + + True + False + True + + + + + \ No newline at end of file diff --git a/CodedJavaDemo/JavaActivities.xaml.json b/CodedJavaDemo/JavaActivities.xaml.json new file mode 100644 index 0000000..1ba9161 --- /dev/null +++ b/CodedJavaDemo/JavaActivities.xaml.json @@ -0,0 +1,21 @@ +{ + "DisplayName": "JavaActivities", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "JavaLibraryPath", + "DisplayName": "JavaLibraryPath", + "Category": null, + "Tooltip": null, + "Placeholder": "C:\\Program Files\\Eclipse Adoptium\\jdk-25.0.2.10-hotspot", + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedJavaDemo/JavaCodedTests.cs b/CodedJavaDemo/JavaCodedTests.cs new file mode 100644 index 0000000..0faf7b5 --- /dev/null +++ b/CodedJavaDemo/JavaCodedTests.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Data; +using UiPath.Activities.System.Jobs.Coded; +using UiPath.CodedWorkflows; +using UiPath.Core; +using UiPath.Core.Activities.Storage; +using UiPath.Java; +using UiPath.Java.Activities; +using UiPath.Java.Activities.API; +using UiPath.Java.Activities.API.Models; +using UiPath.Orchestrator.Client.Models; + +namespace Java +{ + public class JavaCodedTests : CodedWorkflow + { + + [Workflow] + public async System.Threading.Tasks.Task ExecuteAsync() + { + // To start using services, use IntelliSense (CTRL + Space) to discover the available services: + // e.g. system.GetAsset(...) + + // For accessing UI Elements from Object Repository, you can use the Descriptors class e.g: + // var screen = uiAutomation.Open(Descriptors.MyApp.FirstScreen); + // screen.Click(Descriptors.MyApp.FirstScreen.SettingsButton); + + Console.WriteLine("execution begin"); + + //initialize java scope and load Jar + await using var js = await java.UseJavaScope(new JavaScopeOptions() {JavaPath = @$"{Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)}\Eclipse Adoptium\jdk-25.0.2.10-hotspot"}); + await js.LoadJar("Objects.jar"); + + + //Invoke static method + var JavaObjectResultStaticMethod = await js.InvokeStaticMethod("getArrayInt", "uipath.java.test.StaticMethods"); + var arr = js.ConvertObject(JavaObjectResultStaticMethod); + foreach (var r in arr) + { + Console.WriteLine($"ConvertObject returned {r}"); + } + + //Invoke instance method + //Great care here if you specify the types (it should match with the objects)!!!! + var javaObject = await js.CreateObject("uipath.java.test.Coordinate", [200D, 5.5F], [typeof(double), typeof(float)]); + var JavaObjectResultObjectMethod = await js.InvokeMethod("getCoordinateSum", javaObject); + var ObjectMethodResultValue = js.ConvertObject(JavaObjectResultObjectMethod); + + Console.WriteLine($"instance method returned {ObjectMethodResultValue}"); + + { + //no types specified, they are deduced + var javaObject2 = await js.CreateObject("uipath.java.test.Coordinate", [100D, 50.5]); + var JavaObjectResultObjectMethod2 = await js.InvokeMethod("getCoordinateSum", javaObject2); + var ObjectMethodResultValue2 = js.ConvertObject(JavaObjectResultObjectMethod2); + + Console.WriteLine($"instance method (second call) returned {ObjectMethodResultValue2}"); + } + } + } +} \ No newline at end of file diff --git a/CodedJavaDemo/JavaCodedTests.cs.json b/CodedJavaDemo/JavaCodedTests.cs.json new file mode 100644 index 0000000..5a05b5e --- /dev/null +++ b/CodedJavaDemo/JavaCodedTests.cs.json @@ -0,0 +1,21 @@ +{ + "DisplayName": "JavaCodedTests", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "Output", + "DisplayName": "Output", + "Category": null, + "Tooltip": null, + "Placeholder": null, + "Widget": null, + "IsRequired": true, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedJavaDemo/Objects.jar b/CodedJavaDemo/Objects.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc2870977b1f153580a16c414a0855938b354f5b GIT binary patch literal 2855 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 + + + + + + + + 692,884 + ActivityBuilder_1 + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + UiPath.Pipelines.Activities + UiPath.Shared.Activities + System.Reflection + UiPath.Python + UiPath.Python.Activities + System.Runtime.Serialization + System.Linq.Expressions + + + + + System.Activities + Microsoft.VisualBasic + System.Private.CoreLib + mscorlib + System.Data + System + System.Linq + System.Data.Common + System.Drawing + System.Drawing.Primitives + System.Drawing.Common + System.Core + System.Xml + System.Xml.Linq + PresentationFramework + WindowsBase + PresentationCore + System.Xaml + UiPath.System.Activities + UiPath.UiAutomation.Activities + System.Data.DataSetExtensions + UiPath.Studio.Constants + UiPath.Pipelines.Activities + UiPath.Excel.Activities + UiPath.Mail.Activities + UiPath.Testing.Activities + UiPath.OCR.Activities + UiPath.UIAutomationCore + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.ObjectModel + System.Reflection.Metadata + UiPath.Workflow + NPOI + System.Memory.Data + System.ComponentModel.TypeConverter + System.Console + System.Configuration.ConfigurationManager + System.Security.Permissions + System.ComponentModel + System.Memory + System.Private.Uri + UiPath.Python + UiPath.Python.Activities + UiPath.System.Activities.Design + UiPath.System.Activities.ViewModels + System.Linq.Async + System.Private.ServiceModel + System.Collections + System.Private.DataContractSerialization + System.Runtime.Serialization.Formatters + System.Runtime.Serialization.Primitives + UiPath.Word.Activities.Design + System.Linq.Expressions + System.Collections.NonGeneric + + + + + + + + + + + + + + True + + + + + + + + True + + + + + + + + + + + + False + False + + + + + + + False + + + + + + + + + + + + + + + + + + + True + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + + + \ No newline at end of file diff --git a/CodedPythonDemo/Main.xaml.json b/CodedPythonDemo/Main.xaml.json new file mode 100644 index 0000000..8412c63 --- /dev/null +++ b/CodedPythonDemo/Main.xaml.json @@ -0,0 +1,33 @@ +{ + "DisplayName": "Main", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "PythonLib", + "DisplayName": "PythonLib", + "Category": null, + "Tooltip": null, + "Placeholder": null, + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + }, + { + "Name": "PythonPath", + "DisplayName": "PythonPath", + "Category": null, + "Tooltip": null, + "Placeholder": null, + "Widget": null, + "IsRequired": false, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedPythonDemo/PythonTests.cs b/CodedPythonDemo/PythonTests.cs new file mode 100644 index 0000000..d302934 --- /dev/null +++ b/CodedPythonDemo/PythonTests.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Threading; +using System.Threading.Tasks; +using UiPath.Activities.System.Jobs.Coded; +using UiPath.CodedWorkflows; +using UiPath.Core; +using UiPath.Core.Activities.Storage; +using UiPath.Orchestrator.Client.Models; +using UiPath.Python; +using UiPath.Python.Activities; +using UiPath.Python.Activities.API; +using UiPath.Python.Activities.API.Models; + +namespace CodedPythonDemo +{ + public class PythonTests : CodedWorkflow + { + [Workflow] + public async System.Threading.Tasks.Task Execute() + { + //the above should be valid python installation paths + using var pyScope = await python.UsePythonScope(new PythonScopeOptions() + { + LibraryPath = @$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\AppData\Local\Programs\Python\Python313\python313.dll", + Path = @$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\AppData\Local\Programs\Python\Python313" + }); + + Console.WriteLine("after the creation of the scope"); + + + //tab formed python code + var codeInst = await pyScope.LoadCode(@"def sum(a,b): + return a + b +"); + + //Get some random numbers + Random rand = new Random(); + var n1 = rand.Next(1, 101); + var n2 = rand.Next(1, 101); + + Console.WriteLine($"Generated random numbers"); + + //call python script + var sumResultObj = await pyScope.InvokeMethod(codeInst, "sum", new List() {n1, n2} ); + + //Convert to .NET type + int s = pyScope.GetObject(sumResultObj); + + Console.WriteLine($"sum of {n1} and {n2} is {s}"); + + Console.WriteLine($"Wait a few seconds"); + Delay(TimeSpan.FromSeconds(3)); + + Console.WriteLine("Done"); + } + } +} \ No newline at end of file diff --git a/CodedPythonDemo/PythonTests.cs.json b/CodedPythonDemo/PythonTests.cs.json new file mode 100644 index 0000000..fd4a864 --- /dev/null +++ b/CodedPythonDemo/PythonTests.cs.json @@ -0,0 +1,21 @@ +{ + "DisplayName": "PythonTests", + "Tooltip": null, + "HelpLink": null, + "Color": null, + "OriginalIconFileName": null, + "Arguments": [ + { + "Name": "Output", + "DisplayName": "Output", + "Category": null, + "Tooltip": null, + "Placeholder": null, + "Widget": null, + "IsRequired": true, + "IsPrincipal": true, + "ArgumentType": 0, + "DataSourceItems": null + } + ] +} \ No newline at end of file diff --git a/CodedPythonDemo/PythonTestsXm.xaml b/CodedPythonDemo/PythonTestsXm.xaml new file mode 100644 index 0000000..397b145 --- /dev/null +++ b/CodedPythonDemo/PythonTestsXm.xaml @@ -0,0 +1,205 @@ + + + + System.Activities + System.Activities.Statements + System.Activities.Expressions + System.Activities.Validation + System.Activities.XamlIntegration + Microsoft.VisualBasic + Microsoft.VisualBasic.Activities + System + System.Collections + System.Collections.Generic + System.Collections.ObjectModel + System.Data + System.Diagnostics + System.Drawing + System.IO + System.Linq + System.Net.Mail + System.Xml + System.Xml.Linq + UiPath.Core + UiPath.Core.Activities + System.Windows.Markup + GlobalVariablesNamespace + GlobalConstantsNamespace + UiPath.Pipelines.Activities + UiPath.Shared.Activities + System.Reflection + UiPath.Python + UiPath.Python.Activities + System.Runtime.Serialization + System.Linq.Expressions + + + + + System.Activities + Microsoft.VisualBasic + System.Private.CoreLib + mscorlib + System.Data + System + System.Linq + System.Data.Common + System.Drawing + System.Drawing.Primitives + System.Drawing.Common + System.Core + System.Xml + System.Xml.Linq + PresentationFramework + WindowsBase + PresentationCore + System.Xaml + UiPath.System.Activities + UiPath.UiAutomation.Activities + System.Data.DataSetExtensions + UiPath.Studio.Constants + UiPath.Pipelines.Activities + UiPath.Excel.Activities + UiPath.Mail.Activities + UiPath.Testing.Activities + UiPath.OCR.Activities + UiPath.UIAutomationCore + System.Reflection.DispatchProxy + System.Reflection.TypeExtensions + System.ObjectModel + System.Reflection.Metadata + UiPath.Workflow + NPOI + System.Memory.Data + System.ComponentModel.TypeConverter + System.Console + System.Configuration.ConfigurationManager + System.Security.Permissions + System.ComponentModel + System.Memory + System.Private.Uri + UiPath.Python + UiPath.Python.Activities + UiPath.System.Activities.Design + UiPath.System.Activities.ViewModels + System.Linq.Async + System.Private.ServiceModel + System.Collections + System.Private.DataContractSerialization + System.Runtime.Serialization.Formatters + System.Runtime.Serialization.Primitives + UiPath.Word.Activities.Design + System.Linq.Expressions + System.Collections.NonGeneric + CodedPythonDemo.Core + + + + + + + + + + + + + + True + + + + + + + + True + + + + + + + + + + + + False + False + + + + + + + False + + + + + + + + + + + + + + + + + + + True + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + False + + + + + + + + + \ No newline at end of file diff --git a/CodedPythonDemo/entry-points.json b/CodedPythonDemo/entry-points.json new file mode 100644 index 0000000..faacc8a --- /dev/null +++ b/CodedPythonDemo/entry-points.json @@ -0,0 +1,1964 @@ +{ + "$schema": "https://cloud.uipath.com/draft/2024-12/entry-point", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "5feb0d97-7fe2-4200-8f10-450a45dd4e90", + "type": "process", + "input": { + "type": "object", + "properties": { + "PythonLib": { + "type": "string", + "x-default-expression": "String.Format(\"{0}\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll\", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))" + }, + "PythonPath": { + "type": "string", + "x-default-expression": "String.Format(\"{0}\\AppData\\Local\\Programs\\Python\\Python313\", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))" + } + }, + "required": [] + } + }, + { + "filePath": "PythonTests.cs", + "uniqueId": "0b8ddec7-b247-451c-8e73-d2011c6d42a3", + "type": "process", + "output": { + "type": "object", + "properties": { + "Output": { + "type": "object", + "properties": { + "Id": { + "$ref": "#/$defs/integer" + }, + "Exception": { + "type": "object", + "properties": { + "TargetSite": { + "$ref": "#/$defs/methodBase" + }, + "Data": { + "$ref": "#/$defs/iDictionary" + }, + "InnerException": { + "$ref": "#/$defs/exception" + }, + "HelpLink": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "HResult": { + "$ref": "#/$defs/integer1" + }, + "StackTrace": { + "$ref": "#/$defs/string" + }, + "InnerExceptions": { + "$ref": "#/$defs/readOnlyCollectionOfException" + }, + "Message": { + "$ref": "#/$defs/string" + } + }, + "readOnly": true + }, + "Status": { + "enum": [ + "Created", + "WaitingForActivation", + "WaitingToRun", + "Running", + "WaitingForChildrenToComplete", + "RanToCompletion", + "Canceled", + "Faulted" + ], + "readOnly": true + }, + "IsCanceled": { + "$ref": "#/$defs/boolean" + }, + "IsCompleted": { + "$ref": "#/$defs/boolean" + }, + "IsCompletedSuccessfully": { + "$ref": "#/$defs/boolean" + }, + "CreationOptions": { + "enum": [ + "None", + "PreferFairness", + "LongRunning", + "AttachedToParent", + "DenyChildAttach", + "HideScheduler", + "RunContinuationsAsynchronously" + ], + "readOnly": true + }, + "AsyncState": { + "$ref": "#/$defs/object" + }, + "IsFaulted": { + "$ref": "#/$defs/boolean" + } + }, + "$defs": { + "integer": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647, + "readOnly": true + }, + "integer1": { + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 + }, + "methodBase": { + "type": "object", + "properties": { + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "memberTypes": { + "enum": [ + "Constructor", + "Event", + "Field", + "Method", + "Property", + "TypeInfo", + "Custom", + "NestedType", + "All" + ], + "readOnly": true + }, + "string": { + "type": "string", + "readOnly": true, + "deprecated": true + }, + "type": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "type1": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + } + } + }, + "arrayOfCustomAttributeData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "AttributeType": { + "$ref": "#/$defs/type" + }, + "Constructor": { + "$ref": "#/$defs/constructorInfo" + }, + "ConstructorArguments": { + "$ref": "#/$defs/iListOfCustomAttributeTypedArgument" + }, + "NamedArguments": { + "$ref": "#/$defs/iListOfCustomAttributeNamedArgument" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "constructorInfo": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + } + }, + "readOnly": true + }, + "module": { + "type": "object", + "properties": { + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "FullyQualifiedName": { + "$ref": "#/$defs/string" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "MDStreamVersion": { + "$ref": "#/$defs/integer" + }, + "ModuleVersionId": { + "$ref": "#/$defs/guid" + }, + "ScopeName": { + "$ref": "#/$defs/string" + }, + "ModuleHandle": { + "$ref": "#/$defs/moduleHandle" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "assembly": { + "type": "object", + "properties": { + "DefinedTypes": { + "$ref": "#/$defs/arrayOfTypeInfo" + }, + "ExportedTypes": { + "$ref": "#/$defs/arrayOfType1" + }, + "CodeBase": { + "$ref": "#/$defs/string" + }, + "EntryPoint": { + "$ref": "#/$defs/methodInfo" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "ImageRuntimeVersion": { + "$ref": "#/$defs/string" + }, + "IsDynamic": { + "$ref": "#/$defs/boolean" + }, + "Location": { + "$ref": "#/$defs/string" + }, + "ReflectionOnly": { + "$ref": "#/$defs/boolean" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "IsFullyTrusted": { + "$ref": "#/$defs/boolean" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "EscapedCodeBase": { + "$ref": "#/$defs/string" + }, + "ManifestModule": { + "$ref": "#/$defs/module" + }, + "Modules": { + "$ref": "#/$defs/arrayOfModule" + }, + "GlobalAssemblyCache": { + "$ref": "#/$defs/boolean" + }, + "HostContext": { + "$ref": "#/$defs/integer2" + }, + "SecurityRuleSet": { + "$ref": "#/$defs/securityRuleSet" + } + }, + "readOnly": true + }, + "arrayOfTypeInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "IsInterface": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Namespace": { + "$ref": "#/$defs/string" + }, + "AssemblyQualifiedName": { + "$ref": "#/$defs/string" + }, + "FullName": { + "$ref": "#/$defs/string" + }, + "Assembly": { + "$ref": "#/$defs/assembly" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "IsNested": { + "$ref": "#/$defs/boolean" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "DeclaringMethod": { + "$ref": "#/$defs/methodBase" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "UnderlyingSystemType": { + "$ref": "#/$defs/type" + }, + "IsTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPointer": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodParameter": { + "$ref": "#/$defs/boolean" + }, + "IsGenericType": { + "$ref": "#/$defs/boolean" + }, + "IsGenericTypeDefinition": { + "$ref": "#/$defs/boolean" + }, + "IsSZArray": { + "$ref": "#/$defs/boolean" + }, + "IsVariableBoundArray": { + "$ref": "#/$defs/boolean" + }, + "IsByRefLike": { + "$ref": "#/$defs/boolean" + }, + "IsFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "IsUnmanagedFunctionPointer": { + "$ref": "#/$defs/boolean" + }, + "HasElementType": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeArguments": { + "$ref": "#/$defs/arrayOfType" + }, + "GenericParameterPosition": { + "$ref": "#/$defs/integer" + }, + "GenericParameterAttributes": { + "$ref": "#/$defs/genericParameterAttributes" + }, + "Attributes": { + "$ref": "#/$defs/typeAttributes" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsImport": { + "$ref": "#/$defs/boolean" + }, + "IsSealed": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsClass": { + "$ref": "#/$defs/boolean" + }, + "IsNestedAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamANDAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamily": { + "$ref": "#/$defs/boolean" + }, + "IsNestedFamORAssem": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsNestedPublic": { + "$ref": "#/$defs/boolean" + }, + "IsNotPublic": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsAutoLayout": { + "$ref": "#/$defs/boolean" + }, + "IsExplicitLayout": { + "$ref": "#/$defs/boolean" + }, + "IsLayoutSequential": { + "$ref": "#/$defs/boolean" + }, + "IsAnsiClass": { + "$ref": "#/$defs/boolean" + }, + "IsAutoClass": { + "$ref": "#/$defs/boolean" + }, + "IsUnicodeClass": { + "$ref": "#/$defs/boolean" + }, + "IsCOMObject": { + "$ref": "#/$defs/boolean" + }, + "IsContextful": { + "$ref": "#/$defs/boolean" + }, + "IsEnum": { + "$ref": "#/$defs/boolean" + }, + "IsMarshalByRef": { + "$ref": "#/$defs/boolean" + }, + "IsPrimitive": { + "$ref": "#/$defs/boolean" + }, + "IsValueType": { + "$ref": "#/$defs/boolean" + }, + "IsSignatureType": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "StructLayoutAttribute": { + "$ref": "#/$defs/structLayoutAttribute" + }, + "TypeInitializer": { + "$ref": "#/$defs/constructorInfo" + }, + "TypeHandle": { + "$ref": "#/$defs/runtimeTypeHandle" + }, + "GUID": { + "$ref": "#/$defs/guid" + }, + "BaseType": { + "$ref": "#/$defs/type" + }, + "IsSerializable": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "IsVisible": { + "$ref": "#/$defs/boolean" + }, + "GenericTypeParameters": { + "$ref": "#/$defs/arrayOfType" + }, + "DeclaredConstructors": { + "$ref": "#/$defs/arrayOfConstructorInfo" + }, + "DeclaredEvents": { + "$ref": "#/$defs/arrayOfEventInfo" + }, + "DeclaredFields": { + "$ref": "#/$defs/arrayOfFieldInfo" + }, + "DeclaredMembers": { + "$ref": "#/$defs/arrayOfMemberInfo" + }, + "DeclaredMethods": { + "$ref": "#/$defs/arrayOfMethodInfo" + }, + "DeclaredNestedTypes": { + "$ref": "#/$defs/arrayOfTypeInfo" + }, + "DeclaredProperties": { + "$ref": "#/$defs/arrayOfPropertyInfo" + }, + "ImplementedInterfaces": { + "$ref": "#/$defs/arrayOfType1" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "boolean": { + "type": "boolean", + "readOnly": true, + "deprecated": true + }, + "arrayOfType": { + "type": "array", + "items": { + "$ref": "#/$defs/type" + }, + "readOnly": true + }, + "genericParameterAttributes": { + "enum": [ + "None", + "Covariant", + "Contravariant", + "VarianceMask", + "ReferenceTypeConstraint", + "NotNullableValueTypeConstraint", + "DefaultConstructorConstraint", + "SpecialConstraintMask" + ], + "readOnly": true + }, + "typeAttributes": { + "enum": [ + "NotPublic", + "AutoLayout", + "AnsiClass", + "Class", + "Public", + "NestedPublic", + "NestedPrivate", + "NestedFamily", + "NestedAssembly", + "NestedFamANDAssem", + "VisibilityMask", + "NestedFamORAssem", + "SequentialLayout", + "ExplicitLayout", + "LayoutMask", + "Interface", + "ClassSemanticsMask", + "Abstract", + "Sealed", + "SpecialName", + "RTSpecialName", + "Import", + "Serializable", + "WindowsRuntime", + "UnicodeClass", + "AutoClass", + "StringFormatMask", + "CustomFormatClass", + "HasSecurity", + "ReservedMask", + "BeforeFieldInit", + "CustomFormatMask" + ], + "readOnly": true + }, + "structLayoutAttribute": { + "type": "object", + "properties": { + "TypeId": { + "$ref": "#/$defs/object" + }, + "Pack": { + "$ref": "#/$defs/integer1" + }, + "Size": { + "$ref": "#/$defs/integer1" + }, + "CharSet": { + "enum": [ + "None", + "Ansi", + "Unicode", + "Auto" + ] + }, + "Value": { + "$ref": "#/$defs/layoutKind" + } + }, + "readOnly": true + }, + "object": { + "type": "object", + "readOnly": true + }, + "layoutKind": { + "enum": [ + "Sequential", + "Explicit", + "Auto" + ], + "readOnly": true + }, + "runtimeTypeHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "intPtr": { + "type": "object", + "readOnly": true + }, + "guid": { + "type": "string", + "format": "uuid", + "readOnly": true + }, + "arrayOfConstructorInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/constructorInfo" + }, + "readOnly": true + }, + "arrayOfEventInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Attributes": { + "$ref": "#/$defs/eventAttributes" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "AddMethod": { + "$ref": "#/$defs/methodInfo" + }, + "RemoveMethod": { + "$ref": "#/$defs/methodInfo" + }, + "RaiseMethod": { + "$ref": "#/$defs/methodInfo" + }, + "IsMulticast": { + "$ref": "#/$defs/boolean" + }, + "EventHandlerType": { + "$ref": "#/$defs/type" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "eventAttributes": { + "enum": [ + "None", + "SpecialName", + "RTSpecialName", + "ReservedMask" + ], + "readOnly": true + }, + "methodInfo": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "Attributes": { + "$ref": "#/$defs/methodAttributes" + }, + "MethodImplementationFlags": { + "$ref": "#/$defs/methodImplAttributes" + }, + "CallingConvention": { + "$ref": "#/$defs/callingConventions" + }, + "IsAbstract": { + "$ref": "#/$defs/boolean" + }, + "IsConstructor": { + "$ref": "#/$defs/boolean" + }, + "IsFinal": { + "$ref": "#/$defs/boolean" + }, + "IsHideBySig": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsVirtual": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsConstructedGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethod": { + "$ref": "#/$defs/boolean" + }, + "IsGenericMethodDefinition": { + "$ref": "#/$defs/boolean" + }, + "ContainsGenericParameters": { + "$ref": "#/$defs/boolean" + }, + "MethodHandle": { + "$ref": "#/$defs/runtimeMethodHandle" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "ReturnParameter": { + "$ref": "#/$defs/parameterInfo" + }, + "ReturnType": { + "$ref": "#/$defs/type" + }, + "ReturnTypeCustomAttributes": { + "$ref": "#/$defs/iCustomAttributeProvider" + } + }, + "readOnly": true + }, + "methodAttributes": { + "enum": [ + "PrivateScope", + "ReuseSlot", + "Private", + "FamANDAssem", + "Assembly", + "Family", + "FamORAssem", + "Public", + "MemberAccessMask", + "UnmanagedExport", + "Static", + "Final", + "Virtual", + "HideBySig", + "NewSlot", + "VtableLayoutMask", + "CheckAccessOnOverride", + "Abstract", + "SpecialName", + "RTSpecialName", + "PinvokeImpl", + "HasSecurity", + "RequireSecObject", + "ReservedMask" + ], + "readOnly": true + }, + "methodImplAttributes": { + "enum": [ + "IL", + "Managed", + "Native", + "OPTIL", + "CodeTypeMask", + "Runtime", + "ManagedMask", + "Unmanaged", + "NoInlining", + "ForwardRef", + "Synchronized", + "NoOptimization", + "PreserveSig", + "AggressiveInlining", + "AggressiveOptimization", + "InternalCall", + "MaxMethodImplVal" + ], + "readOnly": true + }, + "callingConventions": { + "enum": [ + "Standard", + "VarArgs", + "Any", + "HasThis", + "ExplicitThis" + ], + "readOnly": true + }, + "runtimeMethodHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "parameterInfo": { + "type": "object", + "properties": { + "Attributes": { + "$ref": "#/$defs/parameterAttributes" + }, + "Member": { + "$ref": "#/$defs/memberInfo" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "ParameterType": { + "$ref": "#/$defs/type" + }, + "Position": { + "$ref": "#/$defs/integer" + }, + "IsIn": { + "$ref": "#/$defs/boolean" + }, + "IsLcid": { + "$ref": "#/$defs/boolean" + }, + "IsOptional": { + "$ref": "#/$defs/boolean" + }, + "IsOut": { + "$ref": "#/$defs/boolean" + }, + "IsRetval": { + "$ref": "#/$defs/boolean" + }, + "DefaultValue": { + "$ref": "#/$defs/object" + }, + "RawDefaultValue": { + "$ref": "#/$defs/object" + }, + "HasDefaultValue": { + "$ref": "#/$defs/boolean" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "parameterAttributes": { + "enum": [ + "None", + "In", + "Out", + "Lcid", + "Retval", + "Optional", + "HasDefault", + "HasFieldMarshal", + "Reserved3", + "Reserved4", + "ReservedMask" + ], + "readOnly": true + }, + "memberInfo": { + "type": "object", + "properties": { + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "iCustomAttributeProvider": { + "type": "object", + "readOnly": true + }, + "arrayOfFieldInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "Attributes": { + "$ref": "#/$defs/fieldAttributes" + }, + "FieldType": { + "$ref": "#/$defs/type" + }, + "IsInitOnly": { + "$ref": "#/$defs/boolean" + }, + "IsLiteral": { + "$ref": "#/$defs/boolean" + }, + "IsNotSerialized": { + "$ref": "#/$defs/boolean" + }, + "IsPinvokeImpl": { + "$ref": "#/$defs/boolean" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "IsStatic": { + "$ref": "#/$defs/boolean" + }, + "IsAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamily": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyAndAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsFamilyOrAssembly": { + "$ref": "#/$defs/boolean" + }, + "IsPrivate": { + "$ref": "#/$defs/boolean" + }, + "IsPublic": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecuritySafeCritical": { + "$ref": "#/$defs/boolean" + }, + "IsSecurityTransparent": { + "$ref": "#/$defs/boolean" + }, + "FieldHandle": { + "$ref": "#/$defs/runtimeFieldHandle" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "fieldAttributes": { + "enum": [ + "PrivateScope", + "Private", + "FamANDAssem", + "Assembly", + "Family", + "FamORAssem", + "Public", + "FieldAccessMask", + "Static", + "InitOnly", + "Literal", + "NotSerialized", + "HasFieldRVA", + "SpecialName", + "RTSpecialName", + "HasFieldMarshal", + "PinvokeImpl", + "HasDefault", + "ReservedMask" + ], + "readOnly": true + }, + "runtimeFieldHandle": { + "type": "object", + "properties": { + "Value": { + "$ref": "#/$defs/intPtr" + } + }, + "readOnly": true + }, + "arrayOfMemberInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/memberInfo" + }, + "readOnly": true + }, + "arrayOfMethodInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/methodInfo" + }, + "readOnly": true + }, + "arrayOfPropertyInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/$defs/string" + }, + "DeclaringType": { + "$ref": "#/$defs/type" + }, + "ReflectedType": { + "$ref": "#/$defs/type" + }, + "Module": { + "$ref": "#/$defs/module" + }, + "CustomAttributes": { + "$ref": "#/$defs/arrayOfCustomAttributeData" + }, + "IsCollectible": { + "$ref": "#/$defs/boolean" + }, + "MetadataToken": { + "$ref": "#/$defs/integer" + }, + "MemberType": { + "$ref": "#/$defs/memberTypes" + }, + "PropertyType": { + "$ref": "#/$defs/type" + }, + "Attributes": { + "$ref": "#/$defs/propertyAttributes" + }, + "IsSpecialName": { + "$ref": "#/$defs/boolean" + }, + "CanRead": { + "$ref": "#/$defs/boolean" + }, + "CanWrite": { + "$ref": "#/$defs/boolean" + }, + "GetMethod": { + "$ref": "#/$defs/methodInfo" + }, + "SetMethod": { + "$ref": "#/$defs/methodInfo" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "propertyAttributes": { + "enum": [ + "None", + "SpecialName", + "RTSpecialName", + "HasDefault", + "Reserved2", + "Reserved3", + "Reserved4", + "ReservedMask" + ], + "readOnly": true + }, + "arrayOfType1": { + "type": "array", + "items": { + "$ref": "#/$defs/type" + }, + "readOnly": true + }, + "arrayOfModule": { + "type": "array", + "items": { + "$ref": "#/$defs/module" + }, + "readOnly": true + }, + "integer2": { + "type": "integer", + "minimum": -9223372036854775808, + "maximum": 9223372036854775807, + "readOnly": true + }, + "securityRuleSet": { + "enum": [ + "None", + "Level1", + "Level2" + ], + "readOnly": true + }, + "moduleHandle": { + "type": "object", + "properties": { + "MDStreamVersion": { + "$ref": "#/$defs/integer" + } + }, + "readOnly": true + }, + "iListOfCustomAttributeTypedArgument": { + "type": "array", + "items": { + "$ref": "#/$defs/customAttributeTypedArgument" + }, + "readOnly": true + }, + "customAttributeTypedArgument": { + "type": "object", + "properties": { + "ArgumentType": { + "$ref": "#/$defs/type" + }, + "Value": { + "$ref": "#/$defs/object" + } + }, + "readOnly": true + }, + "iListOfCustomAttributeNamedArgument": { + "type": "array", + "items": { + "type": "object", + "properties": { + "MemberInfo": { + "$ref": "#/$defs/memberInfo" + }, + "TypedValue": { + "$ref": "#/$defs/customAttributeTypedArgument" + }, + "MemberName": { + "$ref": "#/$defs/string" + }, + "IsField": { + "$ref": "#/$defs/boolean" + } + }, + "readOnly": true + }, + "readOnly": true + }, + "iDictionary": { + "type": "array", + "readOnly": true + }, + "exception": { + "type": "object", + "properties": { + "TargetSite": { + "$ref": "#/$defs/methodBase" + }, + "Message": { + "$ref": "#/$defs/string" + }, + "Data": { + "$ref": "#/$defs/iDictionary" + }, + "InnerException": { + "$ref": "#/$defs/exception" + }, + "HelpLink": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "HResult": { + "$ref": "#/$defs/integer1" + }, + "StackTrace": { + "$ref": "#/$defs/string" + } + }, + "readOnly": true + }, + "readOnlyCollectionOfException": { + "type": "array", + "items": { + "$ref": "#/$defs/exception" + }, + "readOnly": true + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/CodedPythonDemo/project.json b/CodedPythonDemo/project.json new file mode 100644 index 0000000..e1a09ab --- /dev/null +++ b/CodedPythonDemo/project.json @@ -0,0 +1,64 @@ +{ + "name": "CodedPythonDemo", + "projectId": "2e74670d-f1f8-4ba4-9955-61ca212bd563", + "description": "Example of using python coded automations", + "main": "Main.xaml", + "dependencies": { + "UiPath.Python.Activities": "[2.2.0-preview]", + "UiPath.System.Activities": "[26.2.4]" + }, + "webServices": [], + "entitiesStores": [], + "schemaVersion": "4.0", + "studioVersion": "26.0.193.0", + "projectVersion": "1.0.0", + "runtimeOptions": { + "autoDispose": false, + "netFrameworkLazyLoading": false, + "isPausable": true, + "isAttended": false, + "requiresUserInteraction": false, + "supportsPersistence": false, + "workflowSerialization": "NewtonsoftJson", + "excludedLoggedData": [ + "Private:*", + "*password*" + ], + "executionType": "Workflow", + "readyForPiP": false, + "startsInPiP": false, + "mustRestoreAllDependencies": true, + "pipType": "ChildSession" + }, + "designOptions": { + "projectProfile": "Developement", + "outputType": "Process", + "libraryOptions": { + "privateWorkflows": [] + }, + "processOptions": { + "ignoredFiles": [] + }, + "fileInfoCollection": [], + "saveToCloud": false + }, + "expressionLanguage": "VisualBasic", + "entryPoints": [ + { + "filePath": "Main.xaml", + "uniqueId": "5feb0d97-7fe2-4200-8f10-450a45dd4e90", + "input": [], + "output": [] + }, + { + "filePath": "PythonTests.cs", + "uniqueId": "0b8ddec7-b247-451c-8e73-d2011c6d42a3", + "input": [], + "output": [] + } + ], + "isTemplate": false, + "templateProjectData": {}, + "publishData": {}, + "targetFramework": "Portable" +} \ No newline at end of file diff --git a/CodedPythonDemo/project.uiproj b/CodedPythonDemo/project.uiproj new file mode 100644 index 0000000..fb196af --- /dev/null +++ b/CodedPythonDemo/project.uiproj @@ -0,0 +1,6 @@ +{ + "Name": "CodedPythonDemo", + "ProjectType": "Process", + "Description": "Example of using python coded automations", + "MainFile": "Main.xaml" +} \ No newline at end of file diff --git a/README.md b/README.md index cfe68c4..26b4a98 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ # Coded Automations Samples - `ASPNET.Sample` - ASP.NET Core integration example with coded automations, demonstrating how to work with ASP.NET Core applications +- `CodedCredentialsDemo` - an example on how to use Credentials coded automations +- `CodedDatabaseDemo` - an example on how to use Database coded automations - `CodedExcelDemo` - an example on how to use Excel coded automations +- `CodedFTPDemo` - an example on how to use FTP coded automations +- `CodedJavaDemo` - an example on how to use Java coded automations - `CodedPowerPointDemo` - demonstrates PowerPoint coded automations including slide manipulation, text addition, formatting, and file operations +- `CodedPythonDemo` - an example on how to use Python coded automations - `CodedWordDemo` - Word document automation examples showing document handling, picture insertion, data table insertion, and macro execution - `CrossXamlInteroperability` - showcases interoperability between coded automations and XAML workflows - `Form.CrossBrowser.Tests` - cross-browser tests using UiPath's UIAutomation package in coded automations From 5b199c0b2bcc2dbb5f162049bbf4f9cf98a8a664 Mon Sep 17 00:00:00 2001 From: viogroza Date: Fri, 1 May 2026 16:28:53 +0300 Subject: [PATCH 2/2] All: Coded samples [STUD-79807] Address review findings --- CodedCredentialsDemo/CodedCredentialsT.cs | 6 +-- CodedDatabaseDemo/SqliteCodedTests.cs | 46 ++++++++++++------- CodedDatabaseDemo/SqliteSimpleTests.xaml | 54 ++++------------------- CodedFTPDemo/CodedTests.cs | 4 +- CodedJavaDemo/JavaCodedTests.cs | 15 ++++--- CodedPythonDemo/PythonTests.cs | 4 +- 6 files changed, 54 insertions(+), 75 deletions(-) diff --git a/CodedCredentialsDemo/CodedCredentialsT.cs b/CodedCredentialsDemo/CodedCredentialsT.cs index 75589a0..679fc6c 100644 --- a/CodedCredentialsDemo/CodedCredentialsT.cs +++ b/CodedCredentialsDemo/CodedCredentialsT.cs @@ -33,16 +33,16 @@ public void Execute() Console.WriteLine($"added credential for target {target}: {added}"); var cred = credentials.GetSecureCredential(target, CredentialType.Generic, PersistanceType.LocalComputer); - Console.WriteLine($"retrieved credential: {nameof(cred.Found)} {cred.Found}, {nameof(cred.Username)} {cred.Username}, {nameof(cred.Password)} {cred.Password}"); + Console.WriteLine($"retrieved credential: {nameof(cred.Found)} {cred.Found}, {nameof(cred.Username)} {cred.Username}"); //credentials.DeleteCredential(target); var reqCred = credentials.RequestCredential("some message", "some title"); - Console.WriteLine($"retrieved credential: {nameof(reqCred.Confirmed)} {reqCred.Confirmed}, {nameof(reqCred.Username)} {reqCred.Username}, {nameof(reqCred.Password)} {reqCred.Password}"); + Console.WriteLine($"retrieved credential: {nameof(reqCred.Confirmed)} {reqCred.Confirmed}, {nameof(reqCred.Username)} {reqCred.Username}"); var delCred = credentials.DeleteCredential(target); - Console.WriteLine("deleted credential for target {target}: {delCred}"); + Console.WriteLine($"deleted credential for target {target}: {delCred}"); } } } \ No newline at end of file diff --git a/CodedDatabaseDemo/SqliteCodedTests.cs b/CodedDatabaseDemo/SqliteCodedTests.cs index a12701d..131b62c 100644 --- a/CodedDatabaseDemo/SqliteCodedTests.cs +++ b/CodedDatabaseDemo/SqliteCodedTests.cs @@ -9,6 +9,7 @@ using UiPath.Database.Activities.API; using UiPath.Database.Activities.API.Models; using UiPath.Orchestrator.Client.Models; +using System.Activities; namespace DatabaseCodedDemo { @@ -25,37 +26,48 @@ public void Execute() // screen.Click(Descriptors.MyApp.FirstScreen.SettingsButton); string tableName = "MYTESTTABLE"; - + + //Use Sqlite database using var dbCon = database.UseConnection(new DatabaseScopeOptions() { ProviderName = "Microsoft.Data.Sqlite", ConnectionString = "Data Source=mySqlite.db" }); //Check if table exists - var (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName), - default, default); + //We use a query with params to avoid SQL injection + //Notice that the syntax might differ for other providers (eg. Oracle or Sql Server) + //Please check what is the syntax for the provider + var (dt, ds) = dbCon.ExecuteQuery("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name=@tableName", + new Dictionary() { + {"tableName", new ParameterInfo() {Direction = ArgumentDirection.In, Type = typeof(string), Value = tableName}} + }, TimeSpan.FromSeconds(5) + , CommandType.Text); bool exists = Convert.ToInt64(dt.Rows[0][0]) > 0; Console.WriteLine($"initial table {tableName} exists {exists}"); + //Recreate table if does not exist if (!exists) { - dbCon.Execute(string.Format("CREATE TABLE {0} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)", tableName), - default, TimeSpan.FromSeconds(10) - ); + //Here we can't use params, so we are constructing the query -> risk of SQL injection + dbCon.Execute($"CREATE TABLE {tableName} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)", + default, default + ); } //Check again if table exists - (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName), - default, default); + (dt, ds) = dbCon.ExecuteQuery("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name=@tableName", + new Dictionary() { + {"tableName", new ParameterInfo() {Direction = ArgumentDirection.In, Type = typeof(string), Value = tableName}} + }, default); exists = Convert.ToInt64(dt.Rows[0][0]) > 0; Console.WriteLine($"after creation - table {tableName} exists {exists}"); - //insert some data into the table - (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM {0}", tableName), default, default); - var firstId = int.Parse(dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : "0"); + //Get the number of rows in the table + //Again - we can't use params, so we are constructing the query -> risk of SQL injection + (dt, ds) = dbCon.ExecuteQuery($"SELECT COUNT(*) FROM {tableName}", default, default); + var firstId = long.Parse(dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : "0"); Console.WriteLine($"rows before the insertion {firstId}"); - //create new datatable - // Create DataTable + //create new datatable and populate it with some data var ndt = new System.Data.DataTable("dt"); // Add columns @@ -63,15 +75,17 @@ public void Execute() ndt.Columns.Add("NAME", typeof(string)); ndt.Columns.Add("CREATED_AT", typeof(System.DateTime)); - for (int i = firstId+1; i <= firstId+10; i++) + for (var i = firstId+1; i <= firstId+10; i++) { ndt.Rows.Add(new object[] { i , Guid.NewGuid().ToString("N"), DateTime.Now}); } + //Insert the datatable dbCon.BulkInsertDataTable(tableName, ndt); - (dt, ds) = dbCon.ExecuteQuery(string.Format("SELECT COUNT(*) FROM {0}", tableName), default, default); - Console.WriteLine($"rows after the insertion {int.Parse(dt.Rows[0][0].ToString())}"); + //Check that the insertion actually took place + (dt, ds) = dbCon.ExecuteQuery($"SELECT COUNT(*) FROM {tableName}", default, default); + Console.WriteLine($"rows after the insertion {long.Parse(dt.Rows[0][0].ToString())}"); } } } \ No newline at end of file diff --git a/CodedDatabaseDemo/SqliteSimpleTests.xaml b/CodedDatabaseDemo/SqliteSimpleTests.xaml index 4b13e40..f501e02 100644 --- a/CodedDatabaseDemo/SqliteSimpleTests.xaml +++ b/CodedDatabaseDemo/SqliteSimpleTests.xaml @@ -103,15 +103,15 @@ UiPath.Platform UiPath.UIAutomationCore UiPath.OCR.Activities + DatabaseCodedDemo.Core - + - @@ -126,7 +126,7 @@ - + dt @@ -138,15 +138,10 @@ - + tableName - - - string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName) - - @@ -200,7 +195,7 @@ - string.Format("CREATE TABLE {0} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)", tableName) + $"CREATE TABLE {tableName} ( ID INTEGER PRIMARY KEY, NAME TEXT, CREATED_AT TEXT DEFAULT CURRENT_TIMESTAMP)" @@ -216,7 +211,7 @@ - + dt @@ -228,15 +223,10 @@ - + tableName - - - string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='{0}'", tableName) - - @@ -255,7 +245,7 @@ $"after possible creation table {tableName} exists {exists}" - + @@ -284,7 +274,7 @@ - string.Format("SELECT COUNT(*) FROM {0}", tableName) + $"SELECT COUNT(*) FROM {tableName}" @@ -305,13 +295,6 @@ $"firstId {firstId}" - - - - dt - - - @@ -325,25 +308,6 @@ - - - - dt - - - - - dtText - - - - - - - dtText - - - diff --git a/CodedFTPDemo/CodedTests.cs b/CodedFTPDemo/CodedTests.cs index 99ddb9d..2b9fd77 100644 --- a/CodedFTPDemo/CodedTests.cs +++ b/CodedFTPDemo/CodedTests.cs @@ -57,8 +57,8 @@ public async System.Threading.Tasks.Task ExecuteAsync() Console.WriteLine($"{f.FullName}"); } - Console.WriteLine($"we found {filesList.Where(x => x.Type == FtpObjectType.Directory).Count()} directories"); - Console.WriteLine($"we found {filesList.Where(x => x.Type == FtpObjectType.Link).Count()} links"); + Console.WriteLine($"we found {filesList.Count(x => x.Type == FtpObjectType.Directory)} directories"); + Console.WriteLine($"we found {filesList.Count(x => x.Type == FtpObjectType.Link)} links"); //download some file from the FTP server await session.DownloadFiles("/home/ftpuser/image.png", "remoteImg.png", true); diff --git a/CodedJavaDemo/JavaCodedTests.cs b/CodedJavaDemo/JavaCodedTests.cs index 0faf7b5..ac7a8d5 100644 --- a/CodedJavaDemo/JavaCodedTests.cs +++ b/CodedJavaDemo/JavaCodedTests.cs @@ -28,7 +28,8 @@ public async System.Threading.Tasks.Task ExecuteAsync() Console.WriteLine("execution begin"); - //initialize java scope and load Jar + //Initialize java scope and load Jar + //Replace with valid JDK path await using var js = await java.UseJavaScope(new JavaScopeOptions() {JavaPath = @$"{Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)}\Eclipse Adoptium\jdk-25.0.2.10-hotspot"}); await js.LoadJar("Objects.jar"); @@ -44,18 +45,18 @@ public async System.Threading.Tasks.Task ExecuteAsync() //Invoke instance method //Great care here if you specify the types (it should match with the objects)!!!! var javaObject = await js.CreateObject("uipath.java.test.Coordinate", [200D, 5.5F], [typeof(double), typeof(float)]); - var JavaObjectResultObjectMethod = await js.InvokeMethod("getCoordinateSum", javaObject); - var ObjectMethodResultValue = js.ConvertObject(JavaObjectResultObjectMethod); + var javaObjectResultObjectMethod = await js.InvokeMethod("getCoordinateSum", javaObject); + var objectMethodResultValue = js.ConvertObject(javaObjectResultObjectMethod); - Console.WriteLine($"instance method returned {ObjectMethodResultValue}"); + Console.WriteLine($"instance method returned {objectMethodResultValue}"); { //no types specified, they are deduced var javaObject2 = await js.CreateObject("uipath.java.test.Coordinate", [100D, 50.5]); - var JavaObjectResultObjectMethod2 = await js.InvokeMethod("getCoordinateSum", javaObject2); - var ObjectMethodResultValue2 = js.ConvertObject(JavaObjectResultObjectMethod2); + var javaObjectResultObjectMethod2 = await js.InvokeMethod("getCoordinateSum", javaObject2); + var objectMethodResultValue2 = js.ConvertObject(javaObjectResultObjectMethod2); - Console.WriteLine($"instance method (second call) returned {ObjectMethodResultValue2}"); + Console.WriteLine($"instance method (second call) returned {objectMethodResultValue2}"); } } } diff --git a/CodedPythonDemo/PythonTests.cs b/CodedPythonDemo/PythonTests.cs index d302934..2fd5b2f 100644 --- a/CodedPythonDemo/PythonTests.cs +++ b/CodedPythonDemo/PythonTests.cs @@ -20,8 +20,8 @@ public class PythonTests : CodedWorkflow [Workflow] public async System.Threading.Tasks.Task Execute() { - //the above should be valid python installation paths - using var pyScope = await python.UsePythonScope(new PythonScopeOptions() + //the below should be valid python installation paths + await using var pyScope = await python.UsePythonScope(new PythonScopeOptions() { LibraryPath = @$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\AppData\Local\Programs\Python\Python313\python313.dll", Path = @$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\AppData\Local\Programs\Python\Python313"