forked from open-rpa/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
openrpa.html
5828 lines (5579 loc) · 805 KB
/
openrpa.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3. OpenRPA — BPA/OpenIAP Docs 1.0.5 documentation</title>
<script type="text/javascript" src="static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="static/documentation_options.js"></script>
<script src="static/jquery.js"></script>
<script src="static/underscore.js"></script>
<script src="static/doctools.js"></script>
<script src="static/language_data.js"></script>
<script type="text/javascript" src="static/js/theme.js"></script>
<link rel="stylesheet" href="static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="static/pygments.css" type="text/css" />
<link rel="stylesheet" href="static/styles.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="4. Node-RED" href="node_red.html" />
<link rel="prev" title="2. OpenFlow" href="openflow.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> BPA/OpenIAP Docs
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="rpa.html">1. <strong>Introduction to RPA</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="openflow.html">2. <strong>OpenFlow</strong></a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. <strong>OpenRPA</strong></a><ul>
<li class="toctree-l2"><a class="reference internal" href="#what-is-openrpa">3.1. <strong>What is OpenRPA?</strong></a></li>
<li class="toctree-l2"><a class="reference internal" href="#installing-first-run">3.2. <strong>Installing, First Run</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#installing-openrpa-through-windows-msi">3.2.1. Installing OpenRPA through Windows .msi</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#installing-universally-or-user-only">3.2.1.1. Installing Universally or User-Only</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#installing-openrpa-plugins">3.2.2. Installing OpenRPA Plugins</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#configuring-openrpa">3.3. <strong>Configuring OpenRPA</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#parameters">3.3.1. Parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#setting-parameters-locally">3.3.1.1. Setting parameters locally</a></li>
<li class="toctree-l4"><a class="reference internal" href="#setting-parameters-globally">3.3.1.2. Setting parameters globally</a></li>
<li class="toctree-l4"><a class="reference internal" href="#wsurl-openrpa-online-offline-local">3.3.1.3. wsurl (<strong>OpenRPA</strong> online/offline[local])</a></li>
<li class="toctree-l4"><a class="reference internal" href="#username-jwt-password-entropy">3.3.1.4. username / jwt / password / entropy</a></li>
<li class="toctree-l4"><a class="reference internal" href="#isagent">3.3.1.5. isagent</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cancelkey">3.3.1.6. cancelkey</a></li>
<li class="toctree-l4"><a class="reference internal" href="#showloadingscreen">3.3.1.7. showloadingscreen</a></li>
<li class="toctree-l4"><a class="reference internal" href="#culture">3.3.1.8. culture</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ocrlanguage">3.3.1.9. ocrlanguage</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openworkflows">3.3.1.10. openworkflows</a></li>
<li class="toctree-l4"><a class="reference internal" href="#mainwindow-position">3.3.1.11. mainwindow_position</a></li>
<li class="toctree-l4"><a class="reference internal" href="#designerlayout">3.3.1.12. designerlayout</a></li>
<li class="toctree-l4"><a class="reference internal" href="#properties">3.3.1.13. properties</a></li>
<li class="toctree-l4"><a class="reference internal" href="#record-overlay">3.3.1.14. record_overlay</a></li>
<li class="toctree-l4"><a class="reference internal" href="#querypagesize">3.3.1.15. querypagesize</a></li>
<li class="toctree-l4"><a class="reference internal" href="#lastupdatecheck-updatecheckinterval-doupdatecheck">3.3.1.16. lastupdatecheck / updatecheckinterval / doupdatecheck</a></li>
<li class="toctree-l4"><a class="reference internal" href="#autoupdateupdater">3.3.1.17. autoupdateupdater</a></li>
<li class="toctree-l4"><a class="reference internal" href="#log-12-parameters">3.3.1.18. log (12 parameters)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#use-sendkeys">3.3.1.19. use_sendkeys</a></li>
<li class="toctree-l4"><a class="reference internal" href="#use-virtual-click">3.3.1.20. use_virtual_click</a></li>
<li class="toctree-l4"><a class="reference internal" href="#use-animate-mouse">3.3.1.21. use_animate_mouse</a></li>
<li class="toctree-l4"><a class="reference internal" href="#use-postwait">3.3.1.22. use_postwait</a></li>
<li class="toctree-l4"><a class="reference internal" href="#minimize">3.3.1.23. minimize</a></li>
<li class="toctree-l4"><a class="reference internal" href="#recording-add-to-designer">3.3.1.24. recording_add_to_designer</a></li>
<li class="toctree-l4"><a class="reference internal" href="#reloadinterval">3.3.1.25. reloadinterval</a></li>
<li class="toctree-l4"><a class="reference internal" href="#move-animation-run-time-move-animation-steps">3.3.1.26. move_animation_run_time / move_animation_steps</a></li>
<li class="toctree-l4"><a class="reference internal" href="#remote-allow-multiple-running-remote-allow-multiple-running-max">3.3.1.27. remote_allow_multiple_running / remote_allow_multiple_running_max</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cef-useragent">3.3.1.28. cef_useragent</a></li>
<li class="toctree-l4"><a class="reference internal" href="#show-getting-started">3.3.1.29. show_getting_started</a></li>
<li class="toctree-l4"><a class="reference internal" href="#notify-on-workflow-remote-start-notify-on-workflow-end-notify-on-workflow-remote-end">3.3.1.30. notify_on_workflow_remote_start / notify_on_workflow_end / notify_on_workflow_remote_end</a></li>
<li class="toctree-l4"><a class="reference internal" href="#log-busy-warning">3.3.1.31. log_busy_warning</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#quick-start">3.4. <strong>Quick Start</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#create-new-project">3.4.1. Create New Project</a></li>
<li class="toctree-l3"><a class="reference internal" href="#granting-permissions-to-users-roles">3.4.2. Granting permissions to users/roles</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#read">3.4.2.1. Read</a></li>
<li class="toctree-l4"><a class="reference internal" href="#update">3.4.2.2. Update</a></li>
<li class="toctree-l4"><a class="reference internal" href="#delete">3.4.2.3. Delete</a></li>
<li class="toctree-l4"><a class="reference internal" href="#invoke">3.4.2.4. Invoke</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#new-workflow">3.4.3. New Workflow</a></li>
<li class="toctree-l3"><a class="reference internal" href="#using-the-designer">3.4.4. Using the Designer</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#dragging-an-activity">3.4.4.1. Dragging an Activity</a></li>
<li class="toctree-l4"><a class="reference internal" href="#organizing-the-workflow">3.4.4.2. Organizing the Workflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="#creating-and-deleting-variables-arguments">3.4.4.3. Creating and Deleting Variables & Arguments</a></li>
<li class="toctree-l4"><a class="reference internal" href="#output-debug">3.4.4.4. Output & Debug</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#running-the-workflow">3.4.5. Running the Workflow</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#interface">3.5. <strong>Interface</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#activities-toolbox">3.5.1. Activities/Toolbox</a></li>
<li class="toctree-l3"><a class="reference internal" href="#designer">3.5.2. Designer</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#toolbox-snippets-sidebar">3.5.2.1. Toolbox & Snippets sidebar</a></li>
<li class="toctree-l4"><a class="reference internal" href="#workspace">3.5.2.2. Workspace</a></li>
<li class="toctree-l4"><a class="reference internal" href="#properties-box">3.5.2.3. Properties Box</a></li>
<li class="toctree-l4"><a class="reference internal" href="#output-bar">3.5.2.4. Output bar</a></li>
<li class="toctree-l4"><a class="reference internal" href="#connection-bar">3.5.2.5. Connection bar</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#variables-arguments">3.5.3. Variables, Arguments</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#variables">3.5.3.1. <strong>Variables</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#scope">3.5.3.2. <strong>Scope</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#arguments">3.5.3.3. <strong>Arguments</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#imports">3.5.3.4. <strong>Imports</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#serializable-vs-non-serializable-arguments">3.5.3.5. <strong>Serializable vs Non-Serializable Arguments</strong></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#toolbox-detailed">3.5.4. Toolbox Detailed</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id1">3.5.4.1. OpenRPA</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-avirecorder">3.5.4.2. OpenRPA.AviRecorder</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-database">3.5.4.3. OpenRPA.Database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-elisrossum">3.5.4.4. OpenRPA.ElisRossum</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-forms">3.5.4.5. OpenRPA.Forms</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-ie">3.5.4.6. OpenRPA.IE</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-image">3.5.4.7. OpenRPA.Image</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-java">3.5.4.8. OpenRPA.Java</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-nm">3.5.4.9. OpenRPA.NM</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-office">3.5.4.10. OpenRPA.Office</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-openflowdb">3.5.4.11. OpenRPA.OpenFlowDB</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-sap">3.5.4.12. OpenRPA.SAP</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-script">3.5.4.13. OpenRPA.Script</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-utilities">3.5.4.14. OpenRPA.Utilities</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openrpa-windows">3.5.4.15. OpenRPA.Windows</a></li>
<li class="toctree-l4"><a class="reference internal" href="#system-activities">3.5.4.16. System.Activities</a></li>
<li class="toctree-l4"><a class="reference internal" href="#system-activities-core-presentation">3.5.4.17. System.Activities.Core.Presentation</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#recorder-and-selectors">3.6. <strong>Recorder and Selectors</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#difference-between-technologies-nm-sap-windows">3.6.1. Difference between technologies (NM, SAP, Windows, …)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#returning-multiple-elements">3.6.2. Returning multiple elements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#manually-adjusting-selectors">3.6.3. Manually Adjusting Selectors</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#passing-variables-to-a-selector">3.6.3.1. Passing Variables to a <code class="docutils literal notranslate"><span class="pre">Selector</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#using-css-selectors">3.6.3.2. Using CSS Selectors</a></li>
<li class="toctree-l4"><a class="reference internal" href="#using-wildcards">3.6.3.3. Using Wildcards</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#detectors">3.7. <strong>Detectors</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#configuring-detectors">3.7.1. Configuring Detectors</a></li>
<li class="toctree-l3"><a class="reference internal" href="#using-detectors">3.7.2. Using Detectors</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#using-detectors-through-node-red">3.7.2.1. Using Detectors through Node-RED</a></li>
<li class="toctree-l4"><a class="reference internal" href="#using-detectors-through-a-do-while-loop">3.7.2.2. Using Detectors Through a Do-While Loop</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#filewatcher-detector">3.7.3. FileWatcher Detector</a></li>
<li class="toctree-l3"><a class="reference internal" href="#keyboard-detector">3.7.4. Keyboard Detector</a></li>
<li class="toctree-l3"><a class="reference internal" href="#javaclick-detector">3.7.5. JavaClick Detector</a></li>
<li class="toctree-l3"><a class="reference internal" href="#msspeech-detector">3.7.6. MSSpeech Detector</a></li>
<li class="toctree-l3"><a class="reference internal" href="#windowsclick-detector">3.7.7. WindowsClick Detector</a></li>
<li class="toctree-l3"><a class="reference internal" href="#windowselement-detector">3.7.8. WindowsElement Detector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#running-workflows-from-command-line">3.8. <strong>Running Workflows from Command Line</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#capturing-the-workflow-id">3.8.1. Capturing the Workflow ID</a></li>
<li class="toctree-l3"><a class="reference internal" href="#running-workflows-locally">3.8.2. Running Workflows Locally</a></li>
<li class="toctree-l3"><a class="reference internal" href="#scheduling-workflows-to-run-locally">3.8.3. Scheduling Workflows to run Locally</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#plugins">3.9. <strong>Plugins</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#chrome-firefox">3.9.1. Chrome, Firefox</a></li>
<li class="toctree-l3"><a class="reference internal" href="#avi-recorder">3.9.2. AVI Recorder</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#workflow-examples">3.10. <strong>Workflow Examples</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#web-automation">3.10.1. Web Automation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#download-the-excel-file">3.10.1.1. <strong>Download the Excel file</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#read-the-excel-file">3.10.1.2. <strong>Read the Excel file</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#map-the-start-button">3.10.1.3. <strong>Map the Start button</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#loop-the-dataset-rows">3.10.1.4. <strong>Loop the DataSet rows</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#find-the-respective-handle-for-each-webelement-input-field">3.10.1.5. <strong>Find the respective handle for each WebElement input field</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#fill-all-the-required-fields-inside-the-webpage">3.10.1.6. <strong>Fill all the required fields inside the webpage.</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#map-submit-button">3.10.1.7. <strong>Map Submit button</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#workflow-finished">3.10.1.8. <strong>Workflow Finished</strong></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#windows-automation">3.10.2. Windows Automation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#detector">3.10.2.1. Detector</a></li>
<li class="toctree-l4"><a class="reference internal" href="#form">3.10.2.2. Form</a></li>
<li class="toctree-l4"><a class="reference internal" href="#windows-automation-skype-app-using-selectors">3.10.2.3. Windows Automation (Skype app) / Using Selectors</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id39">3.10.2.4. Workflow Finished</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#image-search-ocr">3.10.3. Image Search / OCR</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#load-image-from-file">3.10.3.1. Load Image from File</a></li>
<li class="toctree-l4"><a class="reference internal" href="#get-text">3.10.3.2. Get Text</a></li>
<li class="toctree-l4"><a class="reference internal" href="#evaluation">3.10.3.3. Evaluation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#show-notification">3.10.3.4. <strong>Show Notification</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#id40">3.10.3.5. Workflow Finished</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#excel-read">3.10.4. Excel Read</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#create-an-empty-datatable">3.10.4.1. <strong>Create an Empty DataTable</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#for-each-invoice">3.10.4.2. <strong>For each Invoice</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-this-iteration-s-invoice-to-datatable">3.10.4.3. <strong>Add this iteration’s invoice to DataTable</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#write-excel-from-datatable">3.10.4.4. <strong>Write Excel from DataTable</strong></a></li>
<li class="toctree-l4"><a class="reference internal" href="#id41">3.10.4.5. <strong>Workflow Finished</strong></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#mongodb-entities-manipulation">3.10.5. MongoDB Entities Manipulation</a></li>
<li class="toctree-l3"><a class="reference internal" href="#file-manipulation">3.10.6. File Manipulation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#creating-new-directories">3.10.6.1. Creating new directories</a></li>
<li class="toctree-l4"><a class="reference internal" href="#creating-datatable">3.10.6.2. Creating DataTable</a></li>
<li class="toctree-l4"><a class="reference internal" href="#iterating-over-files-in-directory">3.10.6.3. Iterating over Files in Directory</a></li>
<li class="toctree-l4"><a class="reference internal" href="#get-file-name">3.10.6.4. Get File Name</a></li>
<li class="toctree-l4"><a class="reference internal" href="#separate-files-according-to-extension">3.10.6.5. Separate files according to Extension</a></li>
<li class="toctree-l4"><a class="reference internal" href="#read-file">3.10.6.6. Read File</a></li>
<li class="toctree-l4"><a class="reference internal" href="#get-file-creation-date">3.10.6.7. Get File Creation Date</a></li>
<li class="toctree-l4"><a class="reference internal" href="#check-file-s-content-matches-and-extract-information">3.10.6.8. Check File’s Content (Matches) and Extract Information</a></li>
<li class="toctree-l4"><a class="reference internal" href="#move-files">3.10.6.9. Move files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-files">3.10.6.10. Rename files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-information-to-datatable">3.10.6.11. Add Information to DataTable</a></li>
<li class="toctree-l4"><a class="reference internal" href="#delete-files">3.10.6.12. Delete files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#save-datatable-to-excel-file">3.10.6.13. Save DataTable to Excel file</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#soap-service">3.10.7. SOAP Service</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#visualize-how-the-soap-service-is-defined">3.10.7.1. Visualize how the SOAP Service is defined</a></li>
<li class="toctree-l4"><a class="reference internal" href="#define-input-and-output-variables">3.10.7.2. Define Input and Output Variables</a></li>
<li class="toctree-l4"><a class="reference internal" href="#connect-to-the-soap-service-and-map-the-data-inside-invoke-code">3.10.7.3. Connect to the SOAP Service and map the data inside Invoke Code</a></li>
<li class="toctree-l4"><a class="reference internal" href="#exhibit-the-data-gathered">3.10.7.4. Exhibit the data gathered</a></li>
<li class="toctree-l4"><a class="reference internal" href="#workflow-finished-output">3.10.7.5. Workflow Finished - Output</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#rest-service-integration-with-node-red">3.10.8. REST Service (integration with Node-RED)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#configure-variable-passing-to-from-in-node-red">3.10.8.1. Configure Variable Passing To/From in Node-RED</a></li>
<li class="toctree-l4"><a class="reference internal" href="#message-manipulation-in-node-red">3.10.8.2. Message Manipulation in Node-RED</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id43">3.10.8.3. OpenRPA Forms</a></li>
<li class="toctree-l4"><a class="reference internal" href="#invoke-workflow-through-openrpa">3.10.8.4. Invoke Workflow through OpenRPA</a></li>
<li class="toctree-l4"><a class="reference internal" href="#create-joke-failed-workflow">3.10.8.5. Create Joke Failed Workflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="#evaluate-chuck-norris-joke">3.10.8.6. Evaluate Chuck Norris Joke</a></li>
<li class="toctree-l4"><a class="reference internal" href="#setting-evaluation-failed-process-in-node-red">3.10.8.7. Setting Evaluation Failed process in Node-RED</a></li>
<li class="toctree-l4"><a class="reference internal" href="#invoke-joke-failed-workflow">3.10.8.8. Invoke Joke Failed Workflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="#output-logic">3.10.8.9. Output logic</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id45">3.10.8.10. Workflow Finished</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#reading-and-parsing-pdf-files">3.10.9. Reading and Parsing PDF Files</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#extract-data-from-pdf">3.10.9.1. Extract data from PDF</a></li>
<li class="toctree-l4"><a class="reference internal" href="#match-regular-expression-groups">3.10.9.2. Match Regular Expression groups</a></li>
<li class="toctree-l4"><a class="reference internal" href="#create-datatable-to-store-results">3.10.9.3. Create DataTable to store results</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-row-to-datatable">3.10.9.4. Add row to DataTable</a></li>
<li class="toctree-l4"><a class="reference internal" href="#save-datatable-into-csv">3.10.9.5. Save DataTable into CSV</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id47">3.10.9.6. Workflow Finished</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#openrpa-database-activities-datatable-dataview">3.10.10. OpenRPA.Database Activities, DataTable, DataView</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#download-csv-file">3.10.10.1. Download CSV File</a></li>
<li class="toctree-l4"><a class="reference internal" href="#review-types-from-dataset-using-pandas">3.10.10.2. Review types from Dataset using Pandas</a></li>
<li class="toctree-l4"><a class="reference internal" href="#read-dataset-from-csv-into-datatable">3.10.10.3. Read dataset from CSV into <code class="docutils literal notranslate"><span class="pre">DataTable</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#create-schema-and-table-which-will-hold-the-data-inside-mysql">3.10.10.4. Create <code class="docutils literal notranslate"><span class="pre">Schema</span></code> and <code class="docutils literal notranslate"><span class="pre">Table</span></code> which will hold the data inside <code class="docutils literal notranslate"><span class="pre">MySQL</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#id49">3.10.10.5. Create DataTable to store results</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-batch-no-column">3.10.10.6. Add Batch No. Column</a></li>
<li class="toctree-l4"><a class="reference internal" href="#connect-to-database">3.10.10.7. Connect to Database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#fetch-sql-table-to-datatable">3.10.10.8. Fetch SQL Table to DataTable</a></li>
<li class="toctree-l4"><a class="reference internal" href="#loop-through-dataset">3.10.10.9. Loop through Dataset</a></li>
<li class="toctree-l4"><a class="reference internal" href="#incrementing-id-and-batch-no-variables">3.10.10.10. Incrementing Id and Batch No. variables</a></li>
<li class="toctree-l4"><a class="reference internal" href="#adding-datarows-and-updating-sql-table">3.10.10.11. Adding DataRows and updating SQL Table</a></li>
<li class="toctree-l4"><a class="reference internal" href="#executing-queries-into-the-data-inserted-and-visualizing-data">3.10.10.12. Executing Queries into the Data Inserted and visualizing Data</a></li>
<li class="toctree-l4"><a class="reference internal" href="#using-a-dataview-to-filter-through-the-data">3.10.10.13. Using a DataView to filter through the Data</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#openrpa-faq">3.11. <strong>OpenRPA - FAQ</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#activities">3.11.1. Activities</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#how-to-check-that-an-element-exists">3.11.1.1. How to check that an <code class="docutils literal notranslate"><span class="pre">Element</span></code> exists?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-to-return-the-content-of-the-execute-script-activity">3.11.1.2. How to return the content of the <code class="docutils literal notranslate"><span class="pre">Execute</span> <span class="pre">Script</span></code> Activity</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-to-change-the-email-status-and-get-the-senders-email-address-when-using-the-get-mails-activity">3.11.1.3. How to change the email status and get the senders email address when using the Get Mails Activity?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#is-it-possible-to-import-custom-nuget-packages">3.11.1.4. Is it possible to import custom NuGet packages?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-to-consume-the-password-which-is-stored-as-a-securestring-https-docs-microsoft-com-en-us-dotnet-api-system-security-securestring-view-netcore-3-1-inside-openflow-and-convert-it-for-use-inside-openrpa">3.11.1.5. How to consume the password which is stored as a SecureString (<code class="docutils literal notranslate"><span class="pre">https://docs.microsoft.com/en-us/dotnet/api/system.security.securestring?view=netcore-3.1</span></code>) inside OpenFlow and convert it for use inside OpenRPA?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-to-map-an-argument-which-was-captured-from-another-workflow-inside-openrpa-with-the-invoke-openrpa-activity">3.11.1.6. How to map an <code class="docutils literal notranslate"><span class="pre">argument</span></code> which was captured from another Workflow inside OpenRPA with the <code class="docutils literal notranslate"><span class="pre">Invoke</span> <span class="pre">OpenRPA</span></code> Activity?</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id51">3.11.2. Variables & Arguments</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#how-to-return-a-variable-or-argument-to-node-red">3.11.2.1. How to return a variable or argument to Node-RED</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#selectors">3.11.3. Selectors</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#how-to-use-other-types-of-selectors-in-nm">3.11.3.1. How to use other types of selectors in NM?</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="node_red.html">4. <strong>Node-RED</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="appendix_a.html">5. <strong>Appendix A</strong></a></li>
<li class="toctree-l1"><a class="reference internal" href="appendix_b.html">6. <strong>Appendix B</strong></a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="license.html">1. License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">BPA/OpenIAP Docs</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li><span class="section-number">3. </span><strong>OpenRPA</strong></li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="openrpa">
<h1><span class="section-number">3. </span><strong>OpenRPA</strong><a class="headerlink" href="#openrpa" title="Permalink to this headline">¶</a></h1>
<div class="section" id="what-is-openrpa">
<h2><span class="section-number">3.1. </span><strong>What is OpenRPA?</strong><a class="headerlink" href="#what-is-openrpa" title="Permalink to this headline">¶</a></h2>
<p><strong>OpenRPA</strong> is where the actual automation happens, inside it you create workflows and invoke them, run all the activities needed to complete your task and deploy them with the assistance of <strong>OpenFlow</strong> and <strong>Node-RED</strong>. The framework also offers integration with other tools that are essential such as a message broker and repository management tools. <strong>OpenRPA</strong> also includes other features within itself, such as Image detection/OCR, Browser Navigation and many others.</p>
</div>
<div class="section" id="installing-first-run">
<h2><span class="section-number">3.2. </span><strong>Installing, First Run</strong><a class="headerlink" href="#installing-first-run" title="Permalink to this headline">¶</a></h2>
<p>In this section, the user is provided with a thorough explanation of how to install <strong>OpenRPA</strong>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Although not recommended unless you are creating a developer setup, you may also always run OpenRPA directly from the source code by using Visual Studio 2019.</p>
</div>
<div class="section" id="installing-openrpa-through-windows-msi">
<h3><span class="section-number">3.2.1. </span>Installing OpenRPA through Windows .msi<a class="headerlink" href="#installing-openrpa-through-windows-msi" title="Permalink to this headline">¶</a></h3>
<p>To install OpenRPA, you first need to download the installer executable provided <a class="reference external" href="https://github.com/open-rpa/openrpa/releases/latest/download/OpenRPA.msi">here</a> (<code class="docutils literal notranslate"><span class="pre">https://github.com/open-rpa/openrpa/releases/latest/download/OpenRPA.msi</span></code>).</p>
<div class="section" id="installing-universally-or-user-only">
<h4><span class="section-number">3.2.1.1. </span>Installing Universally or User-Only<a class="headerlink" href="#installing-universally-or-user-only" title="Permalink to this headline">¶</a></h4>
<div class="figure align-center" id="id52">
<img alt="images/openrpa_installation_installation_scope.png" src="images/openrpa_installation_installation_scope.png" />
<p class="caption"><span class="caption-text"><strong>OpenRPA’s installation scope.</strong></span><a class="headerlink" href="#id52" title="Permalink to this image">¶</a></p>
</div>
<p>The installer first prompts the user whether <strong>OpenRPA</strong> should be installed only for the specific single user or universally (all users). <strong>It is recommended to install it universally (requires administrator previleges)</strong>, as it have no downsides, so unless something (or someone) prohibits you from installing it for all users, always do it so.
Installing <strong>OpenRPA</strong> single-user prevents other regular users from the machine from using <strong>OpenRPA</strong>, however, both <strong>OpenFlow</strong> and <strong>NodeRED</strong> accesses are not limited nor related to this, as they are accessed by simply using a browser.
After selecting the desired option, click Next.</p>
</div>
</div>
<div class="section" id="installing-openrpa-plugins">
<h3><span class="section-number">3.2.2. </span>Installing OpenRPA Plugins<a class="headerlink" href="#installing-openrpa-plugins" title="Permalink to this headline">¶</a></h3>
<p>During OpenRPA installation, you may specify which Plugins should be installed.</p>
<p>For production, it is extremely recommended to install only the Plugins that will be used. The reasoning is: some plugins such as <strong>NM</strong>, <strong>SAP</strong> and <strong>Java</strong> (as well as others) use machine resources in order to run and just by having them installed and enable, they might significantly impact CPU usage, specially when running <strong>OpenRPA</strong> on low-spec machines (such as cloud-hosted ones, as they are commonly low-spec in order to save costs). Be aware that CPU usage is further amplified when using HD Robots service, as for each instance of HD Robot user each Plugin will takes its toll.</p>
<p>For development (and experimentation), it is obviously encouraged to run as many plugins as you can afford and are willing to try, our solution has already a wide range of plugins and users can themselves develop plugins as well.</p>
<div class="figure align-center" id="id53">
<img alt="images/openrpa_installation_installation_libraries.png" src="images/openrpa_installation_installation_libraries.png" />
<p class="caption"><span class="caption-text"><strong>OpenRPA’s installation libraries.</strong></span><a class="headerlink" href="#id53" title="Permalink to this image">¶</a></p>
</div>
<p>After selecting the plugins you desire to install, click <code class="docutils literal notranslate"><span class="pre">Next</span></code> once again and <code class="docutils literal notranslate"><span class="pre">Install</span></code> so the installation can be concluded.</p>
<p>If everything goes well the installation finishes and the window on <strong>Fig. 3</strong> appears.</p>
<div class="figure align-center" id="id54">
<img alt="images/openrpa_installation_finished.png" src="images/openrpa_installation_finished.png" />
<p class="caption"><span class="caption-text"><strong>OpenRPA finished installation.</strong></span><a class="headerlink" href="#id54" title="Permalink to this image">¶</a></p>
</div>
</div>
</div>
<div class="section" id="configuring-openrpa">
<h2><span class="section-number">3.3. </span><strong>Configuring OpenRPA</strong><a class="headerlink" href="#configuring-openrpa" title="Permalink to this headline">¶</a></h2>
<p><strong>OpenRPA</strong> settings are saved locally in a file named <code class="docutils literal notranslate"><span class="pre">settings.json</span></code> and it is always¹ located in user’s <code class="docutils literal notranslate"><span class="pre">Documents\OpenRPA</span></code> folder (or full path <code class="docutils literal notranslate"><span class="pre">C:\Users\{YOUR_USER}\Documents\OpenRPA</span></code>). This file contains all configuration parameters for <strong>OpenRPA</strong>, including some which are not accessible through the GUI.</p>
<p><strong>OpenRPA</strong> GUI layout settings, however, are saved in another file: <code class="docutils literal notranslate"><span class="pre">layout.config</span></code>. Deleting <code class="docutils literal notranslate"><span class="pre">layout.config</span></code> bears no trouble, since it will only lose the user’s layout preferences (panel sizes, order, location etc).</p>
<p>Editing either file (<code class="docutils literal notranslate"><span class="pre">settings.json</span></code> / <code class="docutils literal notranslate"><span class="pre">layout.config</span></code>) while <strong>OpenRPA</strong> is running will have no effect and, when the application is closed, any value changed will be lost/overwritten. Hence, if you desire to edit any setting, always make sure that <strong>OpenRPA</strong> is not running.</p>
<p>Further on this section, readers will find documentation for all the parameters which rule the configuration settings for OpenRPA.</p>
<p><em>¹ - Currently, it is not possible to specify the directory where OpenRPA local temporary files (workflows, settings) will be saved.</em></p>
<div class="figure align-center">
<img alt="images/openrpa_settings_json.png" src="images/openrpa_settings_json.png" />
</div>
<div class="section" id="parameters">
<h3><span class="section-number">3.3.1. </span>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h3>
<p>These parameters can be set either from <code class="docutils literal notranslate"><span class="pre">settings.json</span></code> or by adding keys inside the <cite>Windows Registry Editor</cite>.</p>
<div class="section" id="setting-parameters-locally">
<h4><span class="section-number">3.3.1.1. </span>Setting parameters locally<a class="headerlink" href="#setting-parameters-locally" title="Permalink to this headline">¶</a></h4>
<p>If the user desires to set parameters for the local user instance of <strong>OpenRPA</strong>, he may navigate to the <code class="docutils literal notranslate"><span class="pre">Computer\HKEY_USERS\{USER_KEY}\SOFTWARE\OpenRPA</span></code> registry key and add an entry for each parameter he wants to change. Here, the name of the key corresponds to the name of the parameter and its value corresponds to the value.</p>
<p>The process below shows how to set the <code class="docutils literal notranslate"><span class="pre">ocr_language</span></code> parameter to <code class="docutils literal notranslate"><span class="pre">rus</span></code> locally by using the <cite>Windows Registry Editor</cite>.</p>
<p>First, navigate to the <code class="docutils literal notranslate"><span class="pre">Computer\HKEY_USERS\{USER_KEY}\SOFTWARE\OpenRPA</span></code> registry key.</p>
<p>Click with the right-mouse button inside the empty area in the <cite>Windows Registry Editor</cite> window.</p>
<div class="figure align-default">
<img alt="images/openrpa_new_parameter_ocr_language_set.png" src="images/openrpa_new_parameter_ocr_language_set.png" />
</div>
<p>Then, click on <code class="docutils literal notranslate"><span class="pre">New</span></code> > <code class="docutils literal notranslate"><span class="pre">String</span> <span class="pre">value</span></code> and type <code class="docutils literal notranslate"><span class="pre">ocrlanguage</span></code> and press <code class="docutils literal notranslate"><span class="pre">ENTER</span></code>.</p>
<div class="figure align-center">
<img alt="images/openrpa_new_parameter_ocr_language_type_name.png" src="images/openrpa_new_parameter_ocr_language_type_name.png" />
</div>
<p>Finally, double click the newly set register entry and intended register value, in our case <code class="docutils literal notranslate"><span class="pre">rus</span></code> - which corresponds to the Russian language.</p>
<div class="figure align-center">
<img alt="images/openrpa_new_parameter_ocr_language_type_value.png" src="images/openrpa_new_parameter_ocr_language_type_value.png" />
</div>
<p>Now restart OpenRPA to verify the changes were properly made.</p>
</div>
<div class="section" id="setting-parameters-globally">
<h4><span class="section-number">3.3.1.2. </span>Setting parameters globally<a class="headerlink" href="#setting-parameters-globally" title="Permalink to this headline">¶</a></h4>
<p>The same process above is done but for the <code class="docutils literal notranslate"><span class="pre">Computer\Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenRPA</span></code> registry key to enforce parameters globally in the scope of the machine. This means users can’t override these parameters.</p>
</div>
<div class="section" id="wsurl-openrpa-online-offline-local">
<h4><span class="section-number">3.3.1.3. </span>wsurl (<strong>OpenRPA</strong> online/offline[local])<a class="headerlink" href="#wsurl-openrpa-online-offline-local" title="Permalink to this headline">¶</a></h4>
<p>This parameter dictates to which <strong>OpenFlow</strong> enviroment <strong>OpenRPA</strong> should connect.</p>
<p>The expected value is a valid websocket URL.</p>
<p>Default value is <strong>OpenIAP</strong> demo enviroment: <code class="docutils literal notranslate"><span class="pre">wss://app.openiap.io/</span></code>.</p>
<p>If the value is set as blank <code class="docutils literal notranslate"><span class="pre">""</span></code> (empty string), <strong>OpenRPA</strong> will run locally, that is, without being connected to an <strong>OpenFlow</strong> (and consequently, <strong>NodeRED</strong>) and will no longer benefit from the cloud features of the <strong>OON</strong> stack, such as <strong>MongoDB</strong> or <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> remote invoking (as well as many others features).</p>
<p>Examples of valid websockets URL:</p>
<div class="highlight-json-object notranslate"><div class="highlight"><pre><span></span><span class="nt">"wsurl"</span><span class="p">:</span> <span class="s2">"wss://app.openiap.io/"</span><span class="p">,</span>
<span class="nt">"wsurl"</span><span class="p">:</span> <span class="s2">"ws://localhost.openrpa.io"</span><span class="p">,</span>
<span class="nt">"wsurl"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
</pre></div>
</div>
<p>Notice that <code class="docutils literal notranslate"><span class="pre">wss</span></code> indicates that the websocket URL is secured, whereas URLs starting with <code class="docutils literal notranslate"><span class="pre">ws</span></code> are not (same principles as <code class="docutils literal notranslate"><span class="pre">http</span></code> vs <code class="docutils literal notranslate"><span class="pre">https</span></code> for webpages). Therefore, users should make use of the respective protocol that matches with their <strong>OpenFlow</strong> enviroment.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>User that were once connected to an <strong>OpenFlow</strong> websocket, but changed this parameter to blank and are now running <strong>OpenRPA</strong> locally, will still have access to the <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> (and <code class="docutils literal notranslate"><span class="pre">Detectors</span></code>) that were cached in the last access to the repository. However, they must be careful. Next time they connect to the environment, they will NOT commit their changes to the cloud repository and these changes will be overwritten (by latest version available on the cloud repository) and lost, unless properly exported.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Users are always welcome to use <code class="docutils literal notranslate"><span class="pre">wss://app.openiap.io/</span></code> as demo and proof-of-concept enviroment for experimentation purposes, without a subscription. However, when running production processes in this environment it its recommended to supplement this with a paid plan for the Node-RED instances.</p>
</div>
</div>
<div class="section" id="username-jwt-password-entropy">
<h4><span class="section-number">3.3.1.4. </span>username / jwt / password / entropy<a class="headerlink" href="#username-jwt-password-entropy" title="Permalink to this headline">¶</a></h4>
<p>These four parameters work somewhat together and are used by <strong>OpenRPA</strong> to keep track of the last logged user, besides allowing automatic logins, provided that the saved <code class="docutils literal notranslate"><span class="pre">jwt</span></code> is still valid.</p>
<p>Default value for <code class="docutils literal notranslate"><span class="pre">username</span></code> is empty string <code class="docutils literal notranslate"><span class="pre">""</span></code>.</p>
<p>Default values for <code class="docutils literal notranslate"><span class="pre">jwt</span></code> and <code class="docutils literal notranslate"><span class="pre">password</span></code> are <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
<p>Default value for <code class="docutils literal notranslate"><span class="pre">entropy</span></code> is a randomly generated key created by the user’s Windows (example <code class="docutils literal notranslate"><span class="pre">"JungBLhauG+JvQipkQPIp9sLwJw="</span></code>).</p>
<p>After an user logs in to <strong>OpenRPA</strong>, the application will automatically generate a JSON Web Token <code class="docutils literal notranslate"><span class="pre">jwt</span></code> from the combination of <code class="docutils literal notranslate"><span class="pre">username</span></code> and <code class="docutils literal notranslate"><span class="pre">password``¹,</span> <span class="pre">with</span> <span class="pre">a</span> <span class="pre">given</span> <span class="pre">secret</span> <span class="pre">``entropy</span></code>. After the user logs out (or the application is closed), this <code class="docutils literal notranslate"><span class="pre">jwt</span></code> is then saved and, from there, the same user may log back in without the need of typing the credentials again.</p>
<p>¹ - <code class="docutils literal notranslate"><span class="pre">username</span></code> and <code class="docutils literal notranslate"><span class="pre">password</span></code> that were typed in the login screen, not from the <code class="docutils literal notranslate"><span class="pre">settings.json</span></code> file.</p>
<p>If, for any reason, the login is not possible (<code class="docutils literal notranslate"><span class="pre">password</span></code> has been changed, user no longer exists or <code class="docutils literal notranslate"><span class="pre">jwt</span></code> is invalid), <strong>OpenRPA</strong> will prompt the user to login again.</p>
</div>
<div class="section" id="isagent">
<h4><span class="section-number">3.3.1.5. </span>isagent<a class="headerlink" href="#isagent" title="Permalink to this headline">¶</a></h4>
<p>This parameter modifies <strong>OpenRPA</strong> GUI. It should be used when it is desirable to hide <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> logic or if user wants to prevent other users from making changes to <code class="docutils literal notranslate"><span class="pre">Workflows</span></code>.
Expected values are either <code class="docutils literal notranslate"><span class="pre">true</span></code> or <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p>If this parameter is set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, <strong>OpenRPA</strong> client will no longer show the UI elements that allow users to view or edit <code class="docutils literal notranslate"><span class="pre">Workflows</span></code>, but it will still be possible to invoke them (both manually/locally or remotely).</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_running_workflows_running_as_agent.png"><img alt="images/openrpa_running_workflows_running_as_agent.png" src="images/openrpa_running_workflows_running_as_agent.png" style="width: 592.0px; height: 353.5px;" /></a>
</div>
</div>
<div class="section" id="cancelkey">
<h4><span class="section-number">3.3.1.6. </span>cancelkey<a class="headerlink" href="#cancelkey" title="Permalink to this headline">¶</a></h4>
<p>This parameter refers to which key button is responsible for stopping execution inside OpenRPA.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">{ESCAPE}</span></code>.</p>
</div>
<div class="section" id="showloadingscreen">
<h4><span class="section-number">3.3.1.7. </span>showloadingscreen<a class="headerlink" href="#showloadingscreen" title="Permalink to this headline">¶</a></h4>
<p>This parameter defines whether <strong>OpenRPA</strong> loadscreen should show up or not (i.e, the splashscreen with the gears in grey scale when the application is initialized).</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p>There are no pro/cons performance-wise in disabling the loadscreen. In some cases, it might be desirable to turn it off, especially when the robot is running on someone’s computer who is not (and does not need to be) aware of the robot.</p>
</div>
<div class="section" id="culture">
<h4><span class="section-number">3.3.1.8. </span>culture<a class="headerlink" href="#culture" title="Permalink to this headline">¶</a></h4>
<p>This parameter defines the language used in most elements (tooltips, buttons etc.) in the <strong>OpenRPA</strong> GUI. Notice that the list of all possible values will not be shown here, since this list is still expanding (thanks to our contributors).
The most intuitive way to set this parameter is by choosing the language through <code class="docutils literal notranslate"><span class="pre">UI</span> <span class="pre">Language</span></code>, on the upper ribbon of the the <strong>OpenRPA</strong> GUI, in the <code class="docutils literal notranslate"><span class="pre">Settings</span> <span class="pre">tab</span></code>.</p>
<p>Default value is the user’s local input language, if supported by <strong>OpenRPA</strong>. Else, it will default to <code class="docutils literal notranslate"><span class="pre">en</span></code> (which stands for “English”).</p>
</div>
<div class="section" id="ocrlanguage">
<h4><span class="section-number">3.3.1.9. </span>ocrlanguage<a class="headerlink" href="#ocrlanguage" title="Permalink to this headline">¶</a></h4>
<p>This parameter sets the language OCR will use to interpret text on images. The full list of supported languages can be found on <strong>OpenRPA</strong> GUI ribbon in the <code class="docutils literal notranslate"><span class="pre">Settings</span> <span class="pre">tab</span></code> under the name <code class="docutils literal notranslate"><span class="pre">Tesseract</span></code> (next to <code class="docutils literal notranslate"><span class="pre">UI</span> <span class="pre">Language</span></code>).</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">eng</span></code> (which stands for “English”).</p>
</div>
<div class="section" id="openworkflows">
<h4><span class="section-number">3.3.1.10. </span>openworkflows<a class="headerlink" href="#openworkflows" title="Permalink to this headline">¶</a></h4>
<p>A list of IDs of the <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> that were open the last time <strong>OpenRPA</strong> was closed. This parameter exists so that <strong>OpenRPA</strong> can keep track of the <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> tabs and automatically open them next time the application is initialized.</p>
<p>Default value is an empty list <code class="docutils literal notranslate"><span class="pre">[]</span></code>.</p>
</div>
<div class="section" id="mainwindow-position">
<h4><span class="section-number">3.3.1.11. </span>mainwindow_position<a class="headerlink" href="#mainwindow-position" title="Permalink to this headline">¶</a></h4>
<p>This parameter stores information about size and position of the <strong>OpenRPA</strong> GUI on the screen, so that it will be displayed in the same way next time the application is initialized.</p>
<p>The four values refer to the Windows Coordinate System. The first two represent the X and Y coordinates of the upper-left corner of the window, whereas the second pair of values represent the coordinates of the bottom-left corner of the windown.</p>
<p>Default value is “0, 0, 0, 0”.</p>
</div>
<div class="section" id="designerlayout">
<h4><span class="section-number">3.3.1.12. </span>designerlayout<a class="headerlink" href="#designerlayout" title="Permalink to this headline">¶</a></h4>
<p><cite>[DEPRECATED] This is no longer needed as it was replaced by ``layout.config`</cite> file.`</p>
<p>This parameter sets the default <strong>OpenRPA</strong> UI elements, such as the size and position of <code class="docutils literal notranslate"><span class="pre">Toolbox</span></code>, <code class="docutils literal notranslate"><span class="pre">Design</span></code> and <code class="docutils literal notranslate"><span class="pre">Properties</span></code>.</p>
<p>Default value is an empty string <code class="docutils literal notranslate"><span class="pre">""</span></code> and it means that these elements were never adjusted and are on their original spot.</p>
</div>
<div class="section" id="properties">
<h4><span class="section-number">3.3.1.13. </span>properties<a class="headerlink" href="#properties" title="Permalink to this headline">¶</a></h4>
<p>This parameter is a set of inherited classes settings. This is a dynamically created list of the add-ons settings that are loaded when <strong>OpenRPA</strong> is executed. In the case of new plugins, their settings can be added to the global settings in this list. Note that the first word of each parameter is the name of the plugin being setted.</p>
<p>This is an important parameter, since it allows users to configurate their own plugins.</p>
<p>These settings can also be accessed through <strong>OpenRPA</strong> GUI, in <code class="docutils literal notranslate"><span class="pre">Recorder</span> <span class="pre">plugins</span></code> in the <code class="docutils literal notranslate"><span class="pre">Settings</span></code> tab.</p>
<p><code class="docutils literal notranslate"><span class="pre">IE_enable_xpath_support</span></code> - It enables experimental XPath support in <strong>IE</strong>. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">NM_unique_xpath_ids</span></code> - A list of unique IDs for creating XPath selectors.</p>
<p><code class="docutils literal notranslate"><span class="pre">NM_debug_console_output</span></code> - It writes debug information to browser console. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">NM_wait_for_tab_after_set_value</span></code> - It waits for tab status to be in ready state after setting a value. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">NM_wait_for_tab_click</span></code> - It waits for tab status to be in ready state after clicking a button. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">NM_compensate_for_old_addon</span></code> - It adds pixel compensation for old add-ons. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Script_csharp_intellisense</span></code> - It activates Intellisense for C# scripts. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Script_vb_intellisense</span></code> - It activates Intellisense for Visual Basic scripts. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Script_use_embedded_python</span></code> - <strong>OpenRPA</strong> comes with Python embedded, but will use default system Python if disabled. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Script_py_create_no_window</span></code> - It states whether the Python script should be started in a new window or not. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_allow_child_searching</span></code> - If an Element in a Selector is not found, automatically search all children for match. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_allow_multiple_hits_mid_selector</span></code> - It allows an Element Selector in a Selector to find more than one children. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_enum_selector_properties</span></code> - It tests each Selector Element for the minimum required amount of properties needed. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_get_elements_in_different_thread</span></code> - <code class="docutils literal notranslate"><span class="pre">GetElement</span></code> uses another thread while searching in order to avoid locks if selector finds robot. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_traverse_selector_both_ways</span></code> - It traverses UI tree both ways to filter out ghost Selector Elements. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_cache_timeout":</span> <span class="pre">"00:05:00</span></code> - Timeout for caching of Elements. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_enable_cache</span></code> - It enables caching of Elements for faster automation at the expense of RAM. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">Windows_search_descendants</span></code> - It searches all descendants. Please note that this makes the robot slower, so it is recommended to use this option for more simple Selectors. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
</div>
<div class="section" id="record-overlay">
<h4><span class="section-number">3.3.1.14. </span>record_overlay<a class="headerlink" href="#record-overlay" title="Permalink to this headline">¶</a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">Recording</span> <span class="pre">Overlay</span></code> checkbox (which can also be set inside <strong>OpenRPA</strong> ribbon in the <strong>Settings tab</strong>) is used to highlight the Elements as they are moused over while recording. Be aware that CPU performance may be affected when this parameter is set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, hence it is recommended to keep it to <code class="docutils literal notranslate"><span class="pre">false</span></code> and change it only during debugging/presentations purposes.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="querypagesize">
<h4><span class="section-number">3.3.1.15. </span>querypagesize<a class="headerlink" href="#querypagesize" title="Permalink to this headline">¶</a></h4>
<p>This parameter sets the maximum number of results per MongoDB query when Activities in <strong>OpenRPA</strong> are using <strong>OpenFlow</strong>’s API to communicate with the MondoDB.</p>
<p>Each query has a cost of its own and then the data transfer (querypagesize) also has a cost. A high value for <code class="docutils literal notranslate"><span class="pre">querypagesize</span></code> means that MongoDB will be queried less often, but the load of each query will be higher.</p>
<p>There is no perfect value for this parameter, but knowing the differences may optimize specific scenarios for an <strong>OpenRPA</strong> <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> needs.</p>
<p>Default value is 50.</p>
</div>
<div class="section" id="lastupdatecheck-updatecheckinterval-doupdatecheck">
<h4><span class="section-number">3.3.1.16. </span>lastupdatecheck / updatecheckinterval / doupdatecheck<a class="headerlink" href="#lastupdatecheck-updatecheckinterval-doupdatecheck" title="Permalink to this headline">¶</a></h4>
<p>These parameters refer to update checking done by the robot when it is started. If a new update is found, a message will be displayed to the user for him to decide if the updates should be installed or not.</p>
<p><code class="docutils literal notranslate"><span class="pre">lastupdatecheck</span></code> is a log of the last time the robot checked for updates.</p>
<p><code class="docutils literal notranslate"><span class="pre">updatecheckinterval</span></code> sets the interval between update checks. Default value is “1.00:00:00” (i.e., one day).</p>
<p><code class="docutils literal notranslate"><span class="pre">doupdatecheck</span></code> is a boolean value that states if the robot should look for updates or not. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="autoupdateupdater">
<h4><span class="section-number">3.3.1.17. </span>autoupdateupdater<a class="headerlink" href="#autoupdateupdater" title="Permalink to this headline">¶</a></h4>
<p>This parameter sets if the Updater should auto update itself or not. If <code class="docutils literal notranslate"><span class="pre">true</span></code>, it will proceed with the updating without displaying any message to the user.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="log-12-parameters">
<h4><span class="section-number">3.3.1.18. </span>log (12 parameters)<a class="headerlink" href="#log-12-parameters" title="Permalink to this headline">¶</a></h4>
<p>The following parameters refer to the log file created to store all the outputs of the <code class="docutils literal notranslate"><span class="pre">Workflows</span></code>, as well as error or exception messages. There will be more information in this file than in the <code class="docutils literal notranslate"><span class="pre">Logging</span></code> section of the Output bar, since showing too much information in this section slows down the robot. Some of these parameters can be set through the upper ribbon of the GUI, in the <code class="docutils literal notranslate"><span class="pre">Settings</span></code> tab.</p>
<p>The “Level” refers to the type of information user wants to get. Lower numbers mean more critical information, whereas higher numbers mean less critical information. In other words, if user sets minimum and maximum values to, e.g., 1 and 2, only the most important information will be logged. if, on the other hand, the user sets the values to 1 and 7, less critical information will be added to the log file.</p>
<p>The broader the range between the lowest to the highest level, the more information will be retrieved. Please note that this operation slows the robot down, since more processing is required.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_to_file</span></code> - If user enables logs, the robot will create a .txt log file and save it in the root folder of the robot. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_file_level_minimum</span></code> - Default value is “2”.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_file_level_maximum</span></code> - Default value is “5”.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_verbose</span></code> - This parameter habilitates the verbose mode, that is, more words are added to log file in order to make it more readable to humans. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_activity</span></code> - When set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, this parameter adds logs of the activities performed by user during execution of <strong>OpenRPA</strong>, such as changes to <code class="docutils literal notranslate"><span class="pre">Designer</span></code>. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_debug</span></code> - It adds information about debugging to log file. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_selector</span></code> - It adds logs of <code class="docutils literal notranslate"><span class="pre">Selectors</span></code> activities. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_selector_verbose</span></code> - This parameter habilitates verbose mode for selector logs. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_information</span></code> - This parameter enables logging information that is not fundamental to the operation of the robot, but is important for humans to be aware of or keep record of. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_output</span></code> - It adds messages that were displayed in the <code class="docutils literal notranslate"><span class="pre">Output</span></code> tab, as well as messages from <code class="docutils literal notranslate"><span class="pre">Writeline</span></code> Activity. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_warning</span></code> - It adds warning messages to the log file, that is, issues that had an effect on the platform or robot, but did not prevent it from running. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">log_error</span></code> - It adds error messages to the log file, that is, issues that could not be handled by the robot and prevented it from running. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="use-sendkeys">
<h4><span class="section-number">3.3.1.19. </span>use_sendkeys<a class="headerlink" href="#use-sendkeys" title="Permalink to this headline">¶</a></h4>
<p>When set to <code class="docutils literal notranslate"><span class="pre">true</span></code> while recording, this parameter mimics an user typing one key at the time. When set to <code class="docutils literal notranslate"><span class="pre">false</span></code>, the Recorder will try to directly change the control on the selected application and apply the whole text at once. Each application/control may react in a different way, hence the reason why this parameter might be useful.</p>
<p>This parameter can also be accessed through <strong>OpenRPA</strong> ribbon, in the <code class="docutils literal notranslate"><span class="pre">Settings</span></code> tab.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
</div>
<div class="section" id="use-virtual-click">
<h4><span class="section-number">3.3.1.20. </span>use_virtual_click<a class="headerlink" href="#use-virtual-click" title="Permalink to this headline">¶</a></h4>
<p><strong>OpenRPA</strong> tries to do a Virtual Click instead of actually clicking with the mouse. See more at <a class="reference internal" href="appendix_b.html#virtual-click"><span class="std std-ref">Virtual Click</span></a>.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="use-animate-mouse">
<h4><span class="section-number">3.3.1.21. </span>use_animate_mouse<a class="headerlink" href="#use-animate-mouse" title="Permalink to this headline">¶</a></h4>
<p>When playing a recorded Sequence, the cursor will appear changing its position throughout execution. It becomes easier to visualize the actions that were recorded. It also is a way to produce material for RPA presentations.</p>
<p>This parameter can also be accessed through <strong>OpenRPA</strong> ribbon, in the <code class="docutils literal notranslate"><span class="pre">Settings</span></code> tab.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="use-postwait">
<h4><span class="section-number">3.3.1.22. </span>use_postwait<a class="headerlink" href="#use-postwait" title="Permalink to this headline">¶</a></h4>
<p>This parameter sets the default value for all Activities that have <code class="docutils literal notranslate"><span class="pre">post_wait</span></code> property.</p>
<p>It means that the robot will wait this amount of time after each of these Activity to make sure that the computer is responsive before moving on to the next.</p>
<p>It slows down the performance of the robot when running the <code class="docutils literal notranslate"><span class="pre">Workflow</span></code>, as each Activity will have an overhead. This parameter is not necessary, but for extremely specific cases, this is already implemented and may come handy.</p>
<p>Default value is “00:00:00”.</p>
</div>
<div class="section" id="minimize">
<h4><span class="section-number">3.3.1.23. </span>minimize<a class="headerlink" href="#minimize" title="Permalink to this headline">¶</a></h4>
<p>This parameter defines whether <strong>OpenRPA</strong> UI should minimize when running the robot or not.</p>
<p>In order to optimize performance, this parameter should be set to <code class="docutils literal notranslate"><span class="pre">true</span></code>. When running, the robot will access the Desktop and check all open windows to find the one required. So, it doesn’t need to check its own window.</p>
<p>It may be useful to have the window maximized when debugging, so that the user will be able to see what is happenning during execution.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="recording-add-to-designer">
<h4><span class="section-number">3.3.1.24. </span>recording_add_to_designer<a class="headerlink" href="#recording-add-to-designer" title="Permalink to this headline">¶</a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">Record</span> <span class="pre">directly</span> <span class="pre">into</span> <span class="pre">designer</span></code> checkbox (set inside <strong>OpenRPA</strong> ribbon in the <code class="docutils literal notranslate"><span class="pre">Settings</span></code> tab) is used when the user wants to see the activities being inserted into the designer as they are recording it.</p>
<p>Having this parameter enabled is advised during development or while debugging, but be aware that it might cause some input delay. If disabled, the <code class="docutils literal notranslate"><span class="pre">Recorder</span></code> will memorize the activities and only insert them after recording is over.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
</div>
<div class="section" id="reloadinterval">
<h4><span class="section-number">3.3.1.25. </span>reloadinterval<a class="headerlink" href="#reloadinterval" title="Permalink to this headline">¶</a></h4>
<p>Time interval that the robot will use to reload local files when <strong>OpenRPA</strong> is running connected to an <strong>OpenFlow</strong>.</p>
<p>The robot will query <strong>OpenFlow</strong> for a list of <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> and <code class="docutils literal notranslate"><span class="pre">Detectors</span></code> and it will compare the last updated assign on those with the time it has on its local copy. If there are any changes, it will then reload the file or files.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">Worflow</span></code> or <code class="docutils literal notranslate"><span class="pre">Detector</span></code> is already open in the Designer, <strong>OpenRPA</strong> will then raise a warning to the user and ask if the newer version should be loaded or not. If new files are found or if files were deleted, <strong>OpenRPA</strong> will automatically proceed to create or delete files in local directory.</p>
<p>There is also the option of realoding at any time through <strong>OpenRPA</strong> UI, at the <code class="docutils literal notranslate"><span class="pre">General</span></code> tab at the upper ribbon.</p>
<p>Default value is “00:05:00”. If value is set to “00:00:00”, it will never be reaload.</p>
</div>
<div class="section" id="move-animation-run-time-move-animation-steps">
<h4><span class="section-number">3.3.1.26. </span>move_animation_run_time / move_animation_steps<a class="headerlink" href="#move-animation-run-time-move-animation-steps" title="Permalink to this headline">¶</a></h4>
<p>When playing a recorded Sequence, the user may choose whether the movement of a window will be shown as an animation or not. It can be set in the Properties menu of the Activity.</p>
<p><code class="docutils literal notranslate"><span class="pre">move_animation_run_time</span></code> - This parameter sets the amount of time between each of the steps of the animation. Default value is “00:00:00.5000000”.</p>
<p><code class="docutils literal notranslate"><span class="pre">move_animation_steps</span></code> - This parameter sets how many steps the animation will take. If set to 1, no movement will visible, since the window will move directly to the new position. The more steps, the smothier the movement. Default value is “20”.</p>
</div>
<div class="section" id="remote-allow-multiple-running-remote-allow-multiple-running-max">
<h4><span class="section-number">3.3.1.27. </span>remote_allow_multiple_running / remote_allow_multiple_running_max<a class="headerlink" href="#remote-allow-multiple-running-remote-allow-multiple-running-max" title="Permalink to this headline">¶</a></h4>
<p>When a robot is running <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> that rely on application GUI, keyboard or mouse and parallel <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> executions would result in conflicting actions, these parameters set limitations so <strong>OpenFlow</strong>/<strong>Node-RED</strong> will only invoke a given number of workflows at once.</p>
<p><code class="docutils literal notranslate"><span class="pre">remote_allow_multiple_running</span></code> - This parameter sets the permission for the robot to run additional <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> at the same time. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">remote_allow_multiple_running_max</span></code> - It sets the maximum number of <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> that can be run at the same time. Default value is “2”.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>These parameters only apply when the <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> are invoked remotely. When running manually (i.e.: clicking the Play button), the number of allowed <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> is not limited by these.</p>
</div>
</div>
<div class="section" id="cef-useragent">
<h4><span class="section-number">3.3.1.28. </span>cef_useragent<a class="headerlink" href="#cef-useragent" title="Permalink to this headline">¶</a></h4>
<p>This parameter allows user to define what <code class="docutils literal notranslate"><span class="pre">user-agent</span></code> value should the robot use when logging in a Google account. Some users may find issues when loggin in <strong>OpenRPA</strong> using a Google account due to different versions of Chromium browser, so this parameter makes sure the robot is using the most up-to-date version.</p>
<p>Default value is an empty string <code class="docutils literal notranslate"><span class="pre">""</span></code>.</p>
<p>Possible values are the literal <code class="docutils literal notranslate"><span class="pre">user-agent</span></code> header used in most common <code class="docutils literal notranslate"><span class="pre">http-requests</span></code>, such as “Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0”.</p>
</div>
<div class="section" id="show-getting-started">
<h4><span class="section-number">3.3.1.29. </span>show_getting_started<a class="headerlink" href="#show-getting-started" title="Permalink to this headline">¶</a></h4>
<p>This parameter lets the user decide if the “Getting Started” tab will be shown when <strong>OpenRPA</strong> is initialized. This message contains basic information about the App, such as most common shortcuts, as well as links to the Wiki page and explanatory videos.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p>Users may also disable “Getting Started” on the right botton corner of the page (“Show again” checkbox).</p>
</div>
<div class="section" id="notify-on-workflow-remote-start-notify-on-workflow-end-notify-on-workflow-remote-end">
<h4><span class="section-number">3.3.1.30. </span>notify_on_workflow_remote_start / notify_on_workflow_end / notify_on_workflow_remote_end<a class="headerlink" href="#notify-on-workflow-remote-start-notify-on-workflow-end-notify-on-workflow-remote-end" title="Permalink to this headline">¶</a></h4>
<p>These parameters set the notification behavior of <strong>OpenRPA</strong> during execution start and end.</p>
<p><code class="docutils literal notranslate"><span class="pre">notify_on_workflow_remote_start</span></code> - It shows a notification when the <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> is started remotely. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">notify_on_workflow_end</span></code> - It shows a notification when <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> ends running. Default value is <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">notify_on_workflow_remote_end</span></code> - It shows a anotification when <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> ends running remotely. Default value is <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
</div>
<div class="section" id="log-busy-warning">
<h4><span class="section-number">3.3.1.31. </span>log_busy_warning<a class="headerlink" href="#log-busy-warning" title="Permalink to this headline">¶</a></h4>
<p>This parameter defines if a message is logged everytime <strong>OpenFlow</strong> tries to run a <code class="docutils literal notranslate"><span class="pre">Workflow</span></code> and the robot is busy.</p>
<p>This is a performance oriented parameter. It is advised to keep it set to <code class="docutils literal notranslate"><span class="pre">false</span></code> if it is expected for the message to show up often.</p>
<p>Default value is <code class="docutils literal notranslate"><span class="pre">`true</span></code>.</p>
</div>
</div>
</div>
<div class="section" id="quick-start">
<h2><span class="section-number">3.4. </span><strong>Quick Start</strong><a class="headerlink" href="#quick-start" title="Permalink to this headline">¶</a></h2>
<div class="section" id="create-new-project">
<h3><span class="section-number">3.4.1. </span>Create New Project<a class="headerlink" href="#create-new-project" title="Permalink to this headline">¶</a></h3>
<p>To create a new project on OpenRPA simply click on <strong>New > New Project</strong> at the Ribbon. It will then open an empty Workflow named <strong>New Workflow</strong>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_new_project.png"><img alt="images/openrpa_new_project.png" src="images/openrpa_new_project.png" style="width: 180.5px; height: 165.5px;" /></a>
</div>
</div>
<div class="section" id="granting-permissions-to-users-roles">
<h3><span class="section-number">3.4.2. </span>Granting permissions to users/roles<a class="headerlink" href="#granting-permissions-to-users-roles" title="Permalink to this headline">¶</a></h3>
<p>To set the permissions for the current workflow or project, whichever is selected, simply click in the Permissions button at the Ribbon. It opens the <strong>Permissions Window</strong> with the names of all current users for the workflow. There are 4 types of permission available which will be discussed next.</p>
<div class="section" id="read">
<h4><span class="section-number">3.4.2.1. </span>Read<a class="headerlink" href="#read" title="Permalink to this headline">¶</a></h4>
<p>Users have access to execute and view the content of the workflow.</p>
</div>
<div class="section" id="update">
<h4><span class="section-number">3.4.2.2. </span>Update<a class="headerlink" href="#update" title="Permalink to this headline">¶</a></h4>
<p>Users have access to update and view the content of the workflow.</p>
</div>
<div class="section" id="delete">
<h4><span class="section-number">3.4.2.3. </span>Delete<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h4>
<p>Users have access to delete the workflow or group of workflows from the workspace.</p>
</div>
<div class="section" id="invoke">
<h4><span class="section-number">3.4.2.4. </span>Invoke<a class="headerlink" href="#invoke" title="Permalink to this headline">¶</a></h4>
<p>Users have access to invoke the content of the workflow.</p>
<p>To set these permissions simply click in the user you want to grant or revoke permissions and click the desired button. If the user is available at the OpenFlow repository but not in the current workflow, simply click the new button and type their username, a dropdown will come up with suggestions for the name of the user you are looking for. Select the user and click OK.</p>
<div class="figure align-center">
<img alt="images/openrpa_permissions_window.png" src="images/openrpa_permissions_window.png" />
</div>
</div>
</div>
<div class="section" id="new-workflow">
<h3><span class="section-number">3.4.3. </span>New Workflow<a class="headerlink" href="#new-workflow" title="Permalink to this headline">¶</a></h3>
<p>Immediately after clicking <strong>New Project</strong> inside the <strong>New</strong> ribbon, a new empty workflow appears on the screen with a single sequence containing the caption <em>Drop activity here</em>. This is where you are going to add activities to build and implement the BPM process you have in mind.</p>
<p>If you are running <strong>OpenRPA</strong> online (that is, connected to a websocket/<strong>OpenFlow</strong>), your workflows are automatically inside OpenFlow’s repository and will be automatically be synced after each save. The OON stack takes care of workflow deployment, storage and readily makes the most recent version immediately available¹ to everyone (that have permission) in the same <strong>OpenFlow</strong>.</p>
<p><em>¹ - After a save occurs, **OpenFlow*</em> is immediately updated but other users may need to wait until their synchronization happens before your changes are reflected to them (they can also force an update by manually refreshing / reopening <strong>OpenRPA</strong>).*</p>
<div class="figure align-center">
<img alt="images/openrpa_empty_workflow.png" src="images/openrpa_empty_workflow.png" />
</div>
</div>
<div class="section" id="using-the-designer">
<h3><span class="section-number">3.4.4. </span>Using the Designer<a class="headerlink" href="#using-the-designer" title="Permalink to this headline">¶</a></h3>
<p>Below are instructions on how to use OpenRPA’s <strong>Designer</strong> to accomplish a few common tasks inside OpenRPA.</p>
<div class="section" id="dragging-an-activity">
<h4><span class="section-number">3.4.4.1. </span>Dragging an Activity<a class="headerlink" href="#dragging-an-activity" title="Permalink to this headline">¶</a></h4>
<p>To drag an activity into OpenRPA, simply click the activity inside the <strong>Toolbox</strong> keep the left button of the mouse pressed and drag it into the workspace.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_drag_an_activity.png"><img alt="images/openrpa_using_the_designer_drag_an_activity.png" src="images/openrpa_using_the_designer_drag_an_activity.png" style="width: 479.5px; height: 266.5px;" /></a>
</div>
<p>Then, the activity will appear inside the sequence.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_activity_inside_sequence.png"><img alt="images/openrpa_using_the_designer_activity_inside_sequence.png" src="images/openrpa_using_the_designer_activity_inside_sequence.png" style="width: 480.0px; height: 267.5px;" /></a>
</div>
<p>This shows how easy it is to drag it to the main sequence! Try it yourself! Drag another activity into the main sequence.</p>
<p>If, on the other hand, you’d like to drag it into a nested sequence simply repeat the procedure but instead of simply dragging it into the workspace, drag it into the block inside the desired sequence.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_drag_an_activity_into_inner_sequence_drag.png"><img alt="images/openrpa_using_the_designer_drag_an_activity_into_inner_sequence_drag.png" src="images/openrpa_using_the_designer_drag_an_activity_into_inner_sequence_drag.png" style="width: 479.5px; height: 265.5px;" /></a>
</div>
</div>
<div class="section" id="organizing-the-workflow">
<h4><span class="section-number">3.4.4.2. </span>Organizing the Workflow<a class="headerlink" href="#organizing-the-workflow" title="Permalink to this headline">¶</a></h4>
<p>Organizing the workflow in OpenRPA is easily done through changing activities’ display names and organizing sequences by nesting them.</p>
<p><strong>Changing an Activity’s Display Name</strong></p>
<p>To change an activity’s display name, the user can either click the name of the activity or change its property <code class="docutils literal notranslate"><span class="pre">DisplayName</span></code> inside the <strong>Properties box</strong>, as seen in the image below.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_display_name_changing_displayname.png"><img alt="images/openrpa_using_the_designer_display_name_changing_displayname.png" src="images/openrpa_using_the_designer_display_name_changing_displayname.png" style="width: 529.5px; height: 267.0px;" /></a>
</div>
<p><strong>Nesting Sequences</strong></p>
<p>Nesting a sequence inside the main sequence is easy. Simply drag a <strong>Sequence</strong> activity inside the main sequence.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_nesting_sequence_drag_into.png"><img alt="images/openrpa_using_the_designer_nesting_sequence_drag_into.png" src="images/openrpa_using_the_designer_nesting_sequence_drag_into.png" style="width: 479.5px; height: 267.0px;" /></a>
</div>
<p>After that, a new sequence will appear with its default display name set as <code class="docutils literal notranslate"><span class="pre">Sequence</span></code>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_nesting_sequence_dragged.png"><img alt="images/openrpa_using_the_designer_nesting_sequence_dragged.png" src="images/openrpa_using_the_designer_nesting_sequence_dragged.png" style="width: 479.5px; height: 266.5px;" /></a>
</div>
<p>To do the same into already nested sequences or activities containing pseudo sequences, simply drag the <strong>Sequence</strong> activity into the desired block.</p>
</div>
<div class="section" id="creating-and-deleting-variables-arguments">
<h4><span class="section-number">3.4.4.3. </span>Creating and Deleting Variables & Arguments<a class="headerlink" href="#creating-and-deleting-variables-arguments" title="Permalink to this headline">¶</a></h4>
<p><strong>Creating a Variable</strong></p>
<p>To create a variable automatically, the user must have the text caret inside an input field and inside some activity or property belonging to any. Afterwards, they can simply press <code class="docutils literal notranslate"><span class="pre">Ctrl+K</span></code> to create that variable. Remember that after creating that variable, the user must assign a value to its alias through the <code class="docutils literal notranslate"><span class="pre">Variables</span></code> section inside the <strong>Variables, Arguments & Imports box</strong> or through the <strong>Assign</strong> activity. In our case, this variable is assigned to the value “This is variable one”.</p>
<p>To create a variable manually, the user can simply click the field containing the <code class="docutils literal notranslate"><span class="pre">Create</span> <span class="pre">Variable</span></code> placeholder inside the <code class="docutils literal notranslate"><span class="pre">Variables</span></code> section in the <strong>Variables, Arguments & Imports box</strong>, type the variable’s name and if needed, assign a <code class="docutils literal notranslate"><span class="pre">Variable</span> <span class="pre">type</span></code> to it - or just leave it as <code class="docutils literal notranslate"><span class="pre">String</span></code> - then assign its <code class="docutils literal notranslate"><span class="pre">Default</span> <span class="pre">value</span></code>. The user can change its <code class="docutils literal notranslate"><span class="pre">Scope</span></code> as well, which is discussed in the <strong>Variables, Arguments</strong> sections next in this chapter.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_creating_variables_and_arguments_create_variable.png"><img alt="images/openrpa_using_the_designer_creating_variables_and_arguments_create_variable.png" src="images/openrpa_using_the_designer_creating_variables_and_arguments_create_variable.png" style="width: 529.0px; height: 266.0px;" /></a>
</div>
<p>It is useful to remind the user that a variable must always have a specific type. Refer to <strong>Appendix A</strong> for more information on types.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Press <code class="docutils literal notranslate"><span class="pre">Ctrl+K</span></code> to automatically create the variable when entering it upon an input field or create it manually by clicking the <strong>Variables box</strong> under the bottom part of the screen. Use the right-hand side to enter the value which will be assigned to the variable.</p>
</div>
<p><strong>Deleting a Variable</strong></p>
<p>To delete a variable, simply click with the right button mouse in its row inside the <code class="docutils literal notranslate"><span class="pre">Variables</span></code> section of the <strong>Variables, Arguments & Imports box</strong> and click <code class="docutils literal notranslate"><span class="pre">Delete</span></code>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_variable.png"><img alt="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_variable.png" src="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_variable.png" style="width: 529.5px; height: 266.0px;" /></a>
</div>
<p><strong>Creating an Argument</strong></p>
<p>The process for creating an argument is similar, yet there is no way to create an argument automatically. The user must always create it inside the <code class="docutils literal notranslate"><span class="pre">Arguments</span></code> section in the <strong>Variables, Arguments & Imports box</strong> and obligatorily set its <code class="docutils literal notranslate"><span class="pre">Direction</span></code>, which will be discussed in the <strong>Variables, Arguments</strong> section next in this very same chapter.</p>
<p>In order to create an argument, simply click the field containing the placeholder <code class="docutils literal notranslate"><span class="pre">Create</span> <span class="pre">Argument</span></code> inside the <code class="docutils literal notranslate"><span class="pre">Arguments</span></code> section of the <strong>Variables, Arguments & Imports box</strong> type the argument’s name and assign a type to it, if needed - else just leave it as <code class="docutils literal notranslate"><span class="pre">String</span></code>.</p>
<p><strong>Deleting an Argument</strong></p>
<p>To delete an argument, simply click with the right button mouse in its row inside the <code class="docutils literal notranslate"><span class="pre">Arguments</span></code> section of the <strong>Variables, Arguments & Imports box</strong> and click <code class="docutils literal notranslate"><span class="pre">Delete</span></code>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_argument.png"><img alt="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_argument.png" src="images/openrpa_using_the_designer_creating_variables_and_arguments_delete_argument.png" style="width: 530.0px; height: 267.5px;" /></a>
</div>
</div>
<div class="section" id="output-debug">
<h4><span class="section-number">3.4.4.4. </span>Output & Debug<a class="headerlink" href="#output-debug" title="Permalink to this headline">¶</a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">Output</span></code> section inside the <strong>Output bar</strong> is used to output every information pertaining to the execution of workflows inside OpenRPA. This information includes debugging output, ie. error messages, output from the <strong>WriteLine</strong> activity - more on this below - and messages indicating that the workflow has executed successfully. Please refer to the <strong>Designer</strong> section to see a thorough explanation of the Output bar.</p>
<p><strong>Debugging Error Messages</strong></p>
<p>OpenRPA’s error messages are very similar to any C# <strong>trace output</strong>, an example follows below.</p>
<div class="highlight-csharp notranslate"><div class="highlight"><pre><span></span>[13:00:08.797][Output] Using the Designer failed in 00:03.325
# OpenRPA.Interfaces.ElementNotFoundException: Failed locating 1 item(s)
at OpenRPA.Windows.GetElement.Execute(NativeActivityContext context)
at System.Activities.NativeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
</pre></div>
</div>
<p>This is the most common error in OpenRPA, it occurs when an element is selected with any <strong>Get Element</strong> activities but it ends up not existing upon running the workflow - either because its existence has timed out or because the user has willingly closed it.</p>
<p>The <strong>first block</strong> inside the square brackets (<code class="docutils literal notranslate"><span class="pre">[13:00:08.797]</span></code>) is the <code class="docutils literal notranslate"><span class="pre">Timestamp</span></code> of the debug error message. It denotes the exact time when it occurred.</p>
<p>The <strong>second block</strong> inside the square brackets (<code class="docutils literal notranslate"><span class="pre">[Output]</span></code>) denotes the type of message - in our case, obviously, it is an output message.</p>
<p>The <strong>third block</strong> is the content of the debug error message. It contains the name of the workflow which failed (<code class="docutils literal notranslate"><span class="pre">Using</span> <span class="pre">the</span> <span class="pre">Designer</span></code>), followed by its relative execution time (<code class="docutils literal notranslate"><span class="pre">00:;03.325</span></code>) - ie. the time that has elapsed from its start to the failure - and the error which occurred - in our case <code class="docutils literal notranslate"><span class="pre">OpenRPA.Interfaces.ElementNotFoundException</span></code>.</p>
<p>It is recommended that when reporting bugs the user denotes the type of error which occurred - in our case <code class="docutils literal notranslate"><span class="pre">ElementNotFoundException</span></code> - for the purposes of making it easier for people to understand and thus be able to quickly help you solving the error!</p>
<p><strong>Writing Output to the Console with WriteLine</strong></p>
<p>The user can also write expressions to the <code class="docutils literal notranslate"><span class="pre">Output</span></code> console by using the <strong>WriteLine</strong> activity. Any object of type <code class="docutils literal notranslate"><span class="pre">String</span></code> can be used inside an expression which is going to be outputted to the console. Everything else will need to be casted into the type <code class="docutils literal notranslate"><span class="pre">String</span></code>, more on that in <strong>Appendix A</strong>. Expressions need to be prefixed suffixed with <code class="docutils literal notranslate"><span class="pre">"</span></code> to indicate they are strings.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_output_logic_using_writeline.png"><img alt="images/openrpa_using_the_designer_output_logic_using_writeline.png" src="images/openrpa_using_the_designer_output_logic_using_writeline.png" style="width: 481.0px; height: 153.0px;" /></a>
</div>
<p>The user can also write any expressions involving variables, just remember to concatenate them using the <code class="docutils literal notranslate"><span class="pre">+</span></code> operator.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_using_the_designer_output_logic_using_writeline_with_variable.png"><img alt="images/openrpa_using_the_designer_output_logic_using_writeline_with_variable.png" src="images/openrpa_using_the_designer_output_logic_using_writeline_with_variable.png" style="width: 482.5px; height: 191.5px;" /></a>
</div>
</div>
</div>
<div class="section" id="running-the-workflow">
<h3><span class="section-number">3.4.5. </span>Running the Workflow<a class="headerlink" href="#running-the-workflow" title="Permalink to this headline">¶</a></h3>
<p>Running a workflow using the <strong>Designer</strong> is very easy! Simply click the <strong>Play</strong> button inside OpenRPA’s ribbon, as shown below, or press <strong>F5</strong>. The workflow will run and its output can be seen in the <code class="docutils literal notranslate"><span class="pre">Output</span></code> section of the <strong>Output bar</strong>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_running_workflows_run_from_designer.png"><img alt="images/openrpa_running_workflows_run_from_designer.png" src="images/openrpa_running_workflows_run_from_designer.png" style="width: 479.5px; height: 327.0px;" /></a>
</div>
</div>
</div>
<div class="section" id="interface">
<h2><span class="section-number">3.5. </span><strong>Interface</strong><a class="headerlink" href="#interface" title="Permalink to this headline">¶</a></h2>
<div class="section" id="activities-toolbox">
<h3><span class="section-number">3.5.1. </span>Activities/Toolbox<a class="headerlink" href="#activities-toolbox" title="Permalink to this headline">¶</a></h3>
<p>The toolbox is where all the possible activities in <strong>OpenRPA</strong> are contained. Imagine it as a box where all the instruments you’d normally use are, such as a screwdriver or drill. The toolbox is essentially where you’d reach out for getting these tools.</p>
<p>The activities in OpenRPA are separated by categories which clearly represent what they are used for. These categories are properly discussed in the next section.</p>
</div>
<div class="section" id="designer">
<h3><span class="section-number">3.5.2. </span>Designer<a class="headerlink" href="#designer" title="Permalink to this headline">¶</a></h3>
<p>The designer is where the main process of desigining and implementing a task happens inside OpenRPA. It is where you drag and drop activities and add or nest sequences to fulfill your implementation choices, as well as set properties and variables pertaining to your workflow business process. It contains five components: Toolbox & Snippets sidebar, Workspace, Properties box, Output bar and Connection bar.</p>
<div class="figure align-center" id="id55">
<img alt="images/openrpa_sections.png" src="images/openrpa_sections.png" />
<p class="caption"><span class="caption-text"><strong>OpenRPA Designer components.</strong></span><a class="headerlink" href="#id55" title="Permalink to this image">¶</a></p>
</div>
<div class="section" id="toolbox-snippets-sidebar">
<h4><span class="section-number">3.5.2.1. </span>Toolbox & Snippets sidebar<a class="headerlink" href="#toolbox-snippets-sidebar" title="Permalink to this headline">¶</a></h4>
<p>This is the place where all activities lie as well as some code snippets which teaches the user on how to use of the tool for various purposes.</p>
<p>To use an activity, simply drag it into the <code class="docutils literal notranslate"><span class="pre">Workspace</span></code> sequence you want to add it to.</p>
<p>For more information on these activities, such as a detailed explanation of each one, refer to the <strong>Toolbox Detailed</strong> section.</p>
<div class="figure align-center" id="id56">
<a class="reference internal image-reference" href="images/openrpa_designer_toolbox.png"><img alt="images/openrpa_designer_toolbox.png" src="images/openrpa_designer_toolbox.png" style="width: 154.0px; height: 269.5px;" /></a>
<p class="caption"><span class="caption-text"><strong>OpenRPA’s Toolbox.</strong></span><a class="headerlink" href="#id56" title="Permalink to this image">¶</a></p>
</div>
</div>
<div class="section" id="workspace">
<h4><span class="section-number">3.5.2.2. </span>Workspace<a class="headerlink" href="#workspace" title="Permalink to this headline">¶</a></h4>
<p>The workspace is where the user organizes all the activities pertaining to the task which will be fulfilled by the workflow. It is also where the user will set all variables, arguments and import namespaces for further use.</p>
<p>Once the user drags activities into the sequence, upon pressing the <strong>Play</strong> button inside the ribbon or pressing the <code class="docutils literal notranslate"><span class="pre">F5</span></code> key, they will be executed in a cascading manner - each one after the previous one. And if there are any errors - untreated by <strong>TryCatch</strong> or <strong>Throw</strong> activities - the workflow execution will stop and the error message will appear in the Output box, which will be discussed in the <strong>Output bar</strong> section.</p>
<p>Each <strong>Sequence</strong> activity has its own scope as well, which will be discussed in the <strong>Variables</strong> section, further below.</p>
<div class="figure align-center" id="id57">
<a class="reference internal image-reference" href="images/openrpa_designer_workspace.png"><img alt="images/openrpa_designer_workspace.png" src="images/openrpa_designer_workspace.png" style="width: 326.5px; height: 266.5px;" /></a>
<p class="caption"><span class="caption-text"><strong>OpenRPA’s Workspace.</strong></span><a class="headerlink" href="#id57" title="Permalink to this image">¶</a></p>
</div>
<p>The user can also organize their workflow by nesting <strong>Sequence</strong> activities, as shown in the picture below.</p>
<div class="figure align-center" id="id58">
<a class="reference internal image-reference" href="images/openrpa_designer_workspace_nesting_sequences.png"><img alt="images/openrpa_designer_workspace_nesting_sequences.png" src="images/openrpa_designer_workspace_nesting_sequences.png" style="width: 326.0px; height: 266.5px;" /></a>
<p class="caption"><span class="caption-text"><strong>Nesting sequences inside OpenRPA.</strong></span><a class="headerlink" href="#id58" title="Permalink to this image">¶</a></p>
</div>
<p>As well as nesting, the user can use the <strong>Comment Out</strong> activity to ignore everything inside it. In the picture below, all activities inside the <strong>Comment Out</strong> activity won’t be executed.</p>
<div class="figure align-center" id="id59">
<a class="reference internal image-reference" href="images/openrpa_designer_workspace_comment_out.png"><img alt="images/openrpa_designer_workspace_comment_out.png" src="images/openrpa_designer_workspace_comment_out.png" style="width: 326.5px; height: 267.0px;" /></a>
<p class="caption"><span class="caption-text"><strong>Commenting activities out outside OpenRPA.</strong></span><a class="headerlink" href="#id59" title="Permalink to this image">¶</a></p>
</div>
</div>
<div class="section" id="properties-box">
<h4><span class="section-number">3.5.2.3. </span>Properties Box<a class="headerlink" href="#properties-box" title="Permalink to this headline">¶</a></h4>
<p>Every activity in OpenRPA has its own property box, containing parameters passed that change the workings of the given activity. Inside the property box there are also sections which are pretty much self explanatory and refer to the given parameters they cause changes upon, such as <strong>Input</strong>, <strong>Output</strong> or <strong>Misc</strong>.</p>
<div class="figure align-center" id="id60">
<a class="reference internal image-reference" href="images/openrpa_property_box.png"><img alt="images/openrpa_property_box.png" src="images/openrpa_property_box.png" style="width: 196.5px; height: 268.5px;" /></a>
<p class="caption"><span class="caption-text"><strong>Properties box.</strong></span><a class="headerlink" href="#id60" title="Permalink to this image">¶</a></p>
</div>
<p>The only property common to all activities is <code class="docutils literal notranslate"><span class="pre">Displayname</span></code>, which changes the name of the activity inside the workspace. It is shown below.</p>
<div class="figure align-center" id="id61">
<a class="reference internal image-reference" href="images/openrpa_designer_property_box_displayname.png"><img alt="images/openrpa_designer_property_box_displayname.png" src="images/openrpa_designer_property_box_displayname.png" style="width: 529.5px; height: 266.0px;" /></a>
<p class="caption"><span class="caption-text"><strong>Displayname Property.</strong></span><a class="headerlink" href="#id61" title="Permalink to this image">¶</a></p>
</div>
</div>
<div class="section" id="output-bar">
<h4><span class="section-number">3.5.2.4. </span>Output bar<a class="headerlink" href="#output-bar" title="Permalink to this headline">¶</a></h4>
<p>The output bar contains three sections: <code class="docutils literal notranslate"><span class="pre">Logging</span></code>, <code class="docutils literal notranslate"><span class="pre">Output</span></code> and <code class="docutils literal notranslate"><span class="pre">Workflow</span> <span class="pre">Instances</span></code>.</p>
<p><strong>Logging</strong></p>
<p>The <code class="docutils literal notranslate"><span class="pre">Logging</span></code> section shows the output of the <code class="docutils literal notranslate"><span class="pre">Workflows</span></code> as well as any instance of any error or exception which occurred inside <strong>OpenRPA</strong>.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_logging_section.png"><img alt="images/openrpa_logging_section.png" src="images/openrpa_logging_section.png" style="width: 682.5px; height: 162.5px;" /></a>
</div>
<p><strong>Output</strong></p>
<p>The <code class="docutils literal notranslate"><span class="pre">Output</span></code> section contains only outputs generated by any workflows that were executed.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_output_section.png"><img alt="images/openrpa_output_section.png" src="images/openrpa_output_section.png" style="width: 682.5px; height: 118.5px;" /></a>
</div>
<p><strong>Workflow Instances</strong></p>
<p>The <code class="docutils literal notranslate"><span class="pre">Workflow</span> <span class="pre">Instances</span></code> section contains all workflow instances pertaining to the queues file path the currently logged user is listening. It is useful as a catalog of recent workflow results and to see which workflows are queued, idle, complete, failed or running (in progress).</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_workflow_instances_section.png"><img alt="images/openrpa_workflow_instances_section.png" src="images/openrpa_workflow_instances_section.png" style="width: 682.0px; height: 64.5px;" /></a>
</div>
</div>
<div class="section" id="connection-bar">
<h4><span class="section-number">3.5.2.5. </span>Connection bar<a class="headerlink" href="#connection-bar" title="Permalink to this headline">¶</a></h4>
<p>The connection bar contains information related to the connection status of the <strong>OpenFlow</strong> web service set in the <span class="xref std std-ref">Configuring OpenRPA</span> section as well as the status of both <code class="docutils literal notranslate"><span class="pre">NM</span></code> and <code class="docutils literal notranslate"><span class="pre">SAP</span></code> plugins.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_connection_bar.png"><img alt="images/openrpa_connection_bar.png" src="images/openrpa_connection_bar.png" style="width: 682.5px; height: 13.0px;" /></a>
</div>
</div>
</div>
<div class="section" id="variables-arguments">
<h3><span class="section-number">3.5.3. </span>Variables, Arguments<a class="headerlink" href="#variables-arguments" title="Permalink to this headline">¶</a></h3>
<div class="figure align-center" id="id62">
<img alt="images/openrpa_variables_arguments_box.png" src="images/openrpa_variables_arguments_box.png" />
<p class="caption"><span class="caption-text"><strong>Variables, Arguments & Import box.</strong></span><a class="headerlink" href="#id62" title="Permalink to this image">¶</a></p>
</div>
<div class="section" id="variables">
<h4><span class="section-number">3.5.3.1. </span><strong>Variables</strong><a class="headerlink" href="#variables" title="Permalink to this headline">¶</a></h4>
<p>Variables, as their very name states - are changeable values assigned to aliases inside the execution of a sequence. These aliases can be used in mathematical or computational expressions. For example, if you want to save a variable named “price” to assign the price of a product along a sequence. You can use the assign activity and an expression to assign it’s value.</p>
<p>Upon inserting an activity with an input box, if you mention a non-existent variable and want to easily create it you can press <code class="docutils literal notranslate"><span class="pre">Ctrl+K</span></code> and a dropdown will appear with many types of variable to be selected.</p>
<p>Variables in OpenRPA are statically typed and their type can be selected from the <strong>variable type</strong> field inside the argument box.</p>
<div class="section" id="variable-use-case-saving-the-result-of-a-computation">
<h5><span class="section-number">3.5.3.1.1. </span>Variable use case: Saving the result of a computation<a class="headerlink" href="#variable-use-case-saving-the-result-of-a-computation" title="Permalink to this headline">¶</a></h5>
<p>A use case of a variable is demonstrated next. In this example, we will save the result of a computation into a variable.</p>
<p>First, drag an <strong>Assign</strong> activity to the main sequence.</p>
<p>Then, type a name for the variable and press <code class="docutils literal notranslate"><span class="pre">Ctrl+K</span></code> to create it automatically. In this case, the chosen name is <code class="docutils literal notranslate"><span class="pre">resultOfComputation</span></code>.</p>
<p>Afterwards, assign the result of the computation (<code class="docutils literal notranslate"><span class="pre">2*6</span></code>)[right-hand side] to the variable [left-hand side].</p>
<p>The user now may notice that a warning now appears in the right-hand side of the activity. That is because the expression is a <code class="docutils literal notranslate"><span class="pre">Int32</span></code> type, the variable <code class="docutils literal notranslate"><span class="pre">resultOfComputation</span></code> is a <code class="docutils literal notranslate"><span class="pre">string</span></code> and Microsoft Workflow Foundation is strongly typed. if the user has no experience with programming a thorough explanation is given on <strong>Appendix A</strong>. For now, just select the type of the variable as <code class="docutils literal notranslate"><span class="pre">Int32</span></code> in the <code class="docutils literal notranslate"><span class="pre">Variable</span> <span class="pre">type</span></code> parameter inside the <strong>Variables, Arguments & Imports box</strong>, as seen in the picture below.</p>
<div class="figure align-center">
<a class="reference internal image-reference" href="images/openrpa_variables_arguments_variable_use_case_change_variable_type.png"><img alt="images/openrpa_variables_arguments_variable_use_case_change_variable_type.png" src="images/openrpa_variables_arguments_variable_use_case_change_variable_type.png" style="width: 326.5px; height: 266.0px;" /></a>
</div>
</div>
</div>
<div class="section" id="scope">
<h4><span class="section-number">3.5.3.2. </span><strong>Scope</strong><a class="headerlink" href="#scope" title="Permalink to this headline">¶</a></h4>
<p>It refers to the reach of the objects contained within a sequence. If you have some knowledge of programming and scope, you can skip this part.
First, let’s think of it as sets. In this example, we are going to use variables since arguments function as if they were globally scoped.</p>
<p>Per the code block below, one may observe that sequence <strong>B</strong> has access to only variables x, - but since <strong>B</strong> is inside the scope of <strong>A</strong>, it makes sequence <strong>B</strong> to have access to all variables {n, p, x, y}. In simple words, sequences can be used to organize variable scopes and to group activities, just like a developer would normally do in a programming language using functions to avoid monolithic code.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Sequence</span> <span class="n">A</span> <span class="p">{</span>
<span class="n">variables</span> <span class="o">=</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span>
<span class="n">Sequence</span> <span class="n">B</span> <span class="p">{</span>
<span class="n">variables</span> <span class="o">=</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span>
<span class="p">}</span>
<span class="p">}</span>