| Aspect | 🤖 RPA | ⚙️ Traditional Automation |
|---|---|---|
| Interaction Level | Works at the UI layer — mimics clicks, typing, mouse movements like a human | Works via APIs, database connections, or code integration — direct system access |
| Technical Requirement | No coding required; non-technical users can record steps using a recorder | Requires developers to write scripts and deep knowledge of the target system |
| Flexibility | Can automate any application visible on screen, even legacy systems, without modifying them | Only works if the system has an exposed API or the source code is accessible |
| Platform | Domain Best Fit | Key Characteristic | Clients |
|---|---|---|---|
| Automation Anywhere | BFSI | ML + NLP, cloud-native, 50%+ BFSI revenue | JP Morgan, Deloitte |
| UiPath | Healthcare | Orchestrator for centralized control, attended/unattended robots | AXA, BBC, SAP |
| Blue Prism | Retail | Scalable, centrally managed, sold via partners | BNY Mellon, Telefonica |
00:00:10 (hh:mm:ss format) — this means 10 seconds. Alternatively enter TimeSpan.FromSeconds(10) in the Duration field.Student_Name (String), Roll_No (Int32), Class (String). Store output in a variable dtStudents of type DataTable.{"Alice", 1, "B.Tech"}, {"Bob", 2, "MCA"}, {"Carol", 3, "B.Tech"}. Each row populates the data table.dtStudents. Inside the loop body, use a "Write Line" (or Message Box) activity with the expression: row("Student_Name").ToString + " | " + row("Roll_No").ToString + " | " + row("Class").ToStringstudentID (Int32) — store the student's ID. Create house (String) — to store result. Use Input Dialog activity to get the student ID from user.Int32. Set the Expression to: studentID Mod 10 (this extracts the last digit of the ID).house = "Red House" | Case 2 → Assign: house = "Blue House" | Case 3 → Assign: house = "Green House" | Default → Assign: house = "Guest House""Student assigned to: " + house| Feature | Sequence (Sol. X) | Flowchart (Sol. Y) |
|---|---|---|
| Flow type | Linear, top-to-bottom | Multi-branch, conditional |
| Decision making | None required | Risk-tier branching |
| Loops | Not needed | Borderline re-evaluation loop |
| Complexity | Simple, easy to debug | Complex, visual overview |
| UiPath Use Case | Data migration, ETL tasks | Loan approval, order processing |
| Criteria | System A → FullText | System B → OCR |
|---|---|---|
| Data format | HTML (visible + hidden) | Image (scanned invoice) |
| Method | Screen Scraping (FullText) | OCR engine |
| Hidden data | ✓ Can extract | N/A (all pixels) |
| Speed | Fast, highly accurate | Slower, ~95% accurate |
| Virtual environment | Standard browser | Citrix/RDP ✓ |
SalesArray of type Int32[] (array of integers). Initialize with 50 sample values in Default value field: {1200, 3400, 2100, ..., 5600}. Create maxSales (Int32) initialized to Integer.MinValue or 0.maxSales = SalesArray(0) to set the initial max to the first element. This ensures comparison works regardless of the values in the array.Int32. Set Values to SalesArray. This loops through all 50 elements one by one.item > maxSales. In the THEN branch, add Assign: maxSales = item. This updates max whenever a larger value is found.maxSales = SalesArray.Max(). This uses .NET LINQ to find maximum in one line. Then use Write Line: "Highest Sales: " + maxSales.ToString()maxIndex (Int32) and currentIndex. Update maxIndex = currentIndex inside the If THEN block. Increment currentIndex each loop iteration using Assign: currentIndex = currentIndex + 1orderData. Alternatively, use "Copy Selected Text" if the field is selectable.orderData. This places the captured data into the Windows clipboard, ready for pasting.GetFromClipboard() value, or use keyboard shortcut Ctrl+V via "Send Hotkey" activity (Key=v, Ctrl=checked). This pastes the order data.counter (Int32) with default value 5. This is the starting value of the sequence.counter <= 50. Inside the body: (a) Write Line: counter.ToString() — prints current value. (b) Assign: counter = counter + 5 — increments by 5. Loop exits when counter exceeds 50.55 <= 50 is FALSE — loop stops. Total iterations: 10.numArray = {5,10,15,20,25,30,35,40,45,50}. Use "For Each" with TypeArgument Int32. Inside body: Write Line: item.ToString(). This also prints 5 to 50 in steps of 5.| Aspect | While Activity | For Each Activity |
|---|---|---|
| Control | Dynamic — condition checked each iteration | Fixed — iterates over a predefined collection |
| Stop condition | Defined in condition (counter <= 50) | Stops after last element in array |
| Flexibility | High — can handle unknown iteration count | Lower — requires pre-built collection |
| Risk | Infinite loop if condition never false | No risk — bounded by array size |
| Best for | Unknown end condition, dynamic data | Known collection, processing each item |
| This problem | ✅ Better choice | Works, but less elegant |
counter = counter + 5 would cause the loop to run forever — a common UiPath beginner mistake.securePass of type SecureString — default value set by Assign: New System.Net.NetworkCredential("", "123456").SecurePassword. Create attempts (Int32) = 0. Create userInput (String). Create isAuthenticated (Boolean) = False.plainText = New System.Net.NetworkCredential("", securePass).Password. Display using Message Box: "Password (String): " + plainText. This shows "123456" — demonstrating the conversion.attempts < 3 AND NOT isAuthenticated. This ensures maximum 3 tries and exits early if correct password entered.userInput (String).userInput = plainText. THEN: Assign isAuthenticated = True + Message Box "✅ Login Successful!". ELSE: Assign attempts = attempts + 1 + Message Box "❌ Wrong password. " + (3-attempts).ToString() + " attempts left."NOT isAuthenticated → Message Box: "🔒 Account locked. Maximum attempts reached. Workflow terminated."SecureStringHelper.