diff --git a/Wiki/ENG_Guide/html/_sources/Orchestrator/Orchestrator.rst.txt b/Sources/GuideSphinx/Orchestrator/01_Orchestrator.rst
similarity index 70%
rename from Wiki/ENG_Guide/html/_sources/Orchestrator/Orchestrator.rst.txt
rename to Sources/GuideSphinx/Orchestrator/01_Orchestrator.rst
index b94fc25c..6004515a 100644
--- a/Wiki/ENG_Guide/html/_sources/Orchestrator/Orchestrator.rst.txt
+++ b/Sources/GuideSphinx/Orchestrator/01_Orchestrator.rst
@@ -1,6 +1,6 @@
-************************
-Description
-************************
+####################################
+1. Description
+####################################
pyOpenRPA Orchestrator is the executable process.
@@ -9,8 +9,9 @@ The features of the orchestrator is:
- Automatized robots control (customized algorithms, robots scheduling)
- Source code mega flexibility: Light Orchestrator architecture is good for own customization
+************************************
Global settings dict concept
-##################################
+************************************
pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
Because of module compexity, we use 1 init arg - inGSettings
@@ -18,9 +19,9 @@ inGSettings is a complex dictionary which has all reqired parameters for the mod
The description of the GSettings you can find in executable module details.
-
+************************************
Orchestrator how to configure
-##################################
+************************************
To init pyOpenRPA Orchestrator instance use script:
@@ -31,12 +32,10 @@ Orchestrator.Orchestrator(inGSettings=gSettings) # Call the orchestrator def
gSettings structure
-:ref:`gSettingsTemplate`.
-
-
+************************************
Orchestrator architecture
-##################################
+************************************
Orchestrator has several source code components:
- User/robot activity consolidated queue single thread (Processor)
- User/robot activity asynchonus many threads (Processor)
@@ -49,16 +48,19 @@ Orchestrator has several source code components:
Below you can find more information about all of the component.
+***************************
Component Processor
-##################################
+***************************
Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
Async - Create New thread to execute the activity list
- Activity list
-Liast of the activity item
+
+List of the activity item
- Activity item
+
Activity item is universal mechanism to execute different algorythms from any sources.
The core feature of the Activity is to call python defs with args and kwargs.
If you need to init do some activity you can write some python def, then create Activity item with current def.
@@ -66,16 +68,23 @@ ATTENTION: In some cases (such as web transmition), when you can't transmit pyth
?Why i cant transmit python def from the web
Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
-{
- "Def":"DefAliasTest", # def link or def alias (look gSettings["Processor"]["AliasDefDict"])
- "ArgList":[1,2,3], # Args list
- "ArgDict":{"ttt":1,"222":2,"dsd":3}, # Args dictionary
- "ArgGSettings": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
- "ArgLogger": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
-
-
-pyOpenRPA Orchestrator
-##################################
-.. automodule:: pyOpenRPA.Orchestrator.__Orchestrator__
- :members:
\ No newline at end of file
+
+.. note::
+ Example
+ {
+ "Def":"DefAliasTest", # def link or def alias (look gSettings["Processor"]["AliasDefDict"])
+ "ArgList":[1,2,3], # Args list
+ "ArgDict":{"ttt":1,"222":2,"dsd":3}, # Args dictionary
+ "ArgGSettings": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ "ArgLogger": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ }# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
+
+
+**********
+References
+**********
+
+`Python-sphinx`_
+
+.. target-notes::
+.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
diff --git a/Sources/GuideSphinx/Orchestrator/02_Defs.rst b/Sources/GuideSphinx/Orchestrator/02_Defs.rst
new file mode 100644
index 00000000..2be63177
--- /dev/null
+++ b/Sources/GuideSphinx/Orchestrator/02_Defs.rst
@@ -0,0 +1,32 @@
+####################################
+2. Defs
+####################################
+
+**************************************************
+pyOpenRPA.Orchestrator.__Orchestrator__
+**************************************************
+
+.. code-block:: python
+
+ # EXAMPLE 1
+ from pyOpenRPA import Orchestrator
+ Orchestrator.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
+
+ # EXAMPLE 2
+ from pyOpenRPA.Orchestrator import __Orchestrator__
+ __Orchestrator__.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
+
+
+
+.. automodule:: pyOpenRPA.Orchestrator.__Orchestrator__
+ :members:
+
+
+**********
+References
+**********
+
+`Python-sphinx`_
+
+.. target-notes::
+.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
diff --git a/Sources/GuideSphinx/Orchestrator/gSettingsTemplate.rst b/Sources/GuideSphinx/Orchestrator/03_gSettingsTemplate.rst
similarity index 82%
rename from Sources/GuideSphinx/Orchestrator/gSettingsTemplate.rst
rename to Sources/GuideSphinx/Orchestrator/03_gSettingsTemplate.rst
index a99645f5..4efe8d47 100644
--- a/Sources/GuideSphinx/Orchestrator/gSettingsTemplate.rst
+++ b/Sources/GuideSphinx/Orchestrator/03_gSettingsTemplate.rst
@@ -1,6 +1,6 @@
.. _gSettingsTemplate:
************************
-gSettings Template
+3. gSettings Template
************************
gSettings structure
diff --git a/Sources/GuideSphinx/Orchestrator/HowToStart.rst b/Sources/GuideSphinx/Orchestrator/04_HowToStart.rst
similarity index 89%
rename from Sources/GuideSphinx/Orchestrator/HowToStart.rst
rename to Sources/GuideSphinx/Orchestrator/04_HowToStart.rst
index e704cc56..66e056d7 100644
--- a/Sources/GuideSphinx/Orchestrator/HowToStart.rst
+++ b/Sources/GuideSphinx/Orchestrator/04_HowToStart.rst
@@ -1,5 +1,5 @@
************************
-How to start
+4. How to start
************************
Start configuration example
diff --git a/Sources/GuideSphinx/conf.py b/Sources/GuideSphinx/conf.py
index c2a7a4b2..2b8ef4ca 100644
--- a/Sources/GuideSphinx/conf.py
+++ b/Sources/GuideSphinx/conf.py
@@ -31,7 +31,7 @@ release = 'v1.2.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = ['sphinx.ext.todo', 'sphinx.ext.viewcode', 'sphinx.ext.autodoc', "sphinx_rtd_theme",]
+extensions = ['sphinx.ext.todo', 'sphinx.ext.viewcode', 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', "sphinx_rtd_theme",]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
diff --git a/Sources/GuideSphinx/index.rst b/Sources/GuideSphinx/index.rst
index d91941ab..81357a57 100644
--- a/Sources/GuideSphinx/index.rst
+++ b/Sources/GuideSphinx/index.rst
@@ -10,7 +10,6 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: GENERAL
:glob:
- :titlesonly:
*
@@ -18,7 +17,6 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: ROBOT
:glob:
- :titlesonly:
Robot/*
@@ -26,14 +24,12 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: STUDIO
:glob:
- :titlesonly:
Studio/*
.. toctree::
- :maxdepth: 2
+ :maxdepth: 3
:caption: ORCHESTRATOR
:glob:
- :titlesonly:
Orchestrator/*
\ No newline at end of file
diff --git a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py
index 710ea456..0d2f269a 100644
--- a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py
+++ b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py
@@ -31,6 +31,11 @@ def AgentActivityItemAdd(inGSettings, inHostNameStr, inUserStr, inActivityItemDi
"""
Add activity in AgentDict. Check if item is created
+ .. code-block:: python
+
+ # USAGE
+ import this
+
:param inGSettings: Global settings dict (singleton)
:param inHostNameStr: Agent host name
:param inUserStr: User login, where agent is based
@@ -480,9 +485,27 @@ def GSettingsKeyListValueAppend(inGSettings, inValue, inKeyList=None):
"""
Append value in GSettings by the key list
+ .. code-block:: python
+
+ # USAGE
+ from pyOpenRPA import Orchestrator
+
+ Orchestrator.GSettingsKeyListValueAppend(
+ inGSettings = gSettings,
+ inValue = "NewValue",
+ inKeyList=["NewKeyDict","NewKeyList"]):
+ # result inGSettings: {
+ # ... another keys in gSettings ...,
+ # "NewKeyDict":{
+ # "NewKeyList":[
+ # "NewValue"
+ # ]
+ # }
+ #}
+
:param inGSettings: Global settings dict (singleton)
- :param inValue:
- :param inKeyList:
+ :param inValue: Any value to be appended in gSettings Dict by the key list
+ :param inKeyList: List of the nested keys (see example)
:return: True every time
"""
if inKeyList is None: inKeyList = []
@@ -499,11 +522,32 @@ def GSettingsKeyListValueAppend(inGSettings, inValue, inKeyList=None):
def GSettingsKeyListValueOperatorPlus(inGSettings, inValue, inKeyList=None):
"""
- Operator plus value in GSettings by the key list
+ Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList)
+
+ .. code-block:: python
+
+ # USAGE
+ from pyOpenRPA import Orchestrator
+
+ Orchestrator.GSettingsKeyListValueOperatorPlus(
+ inGSettings = gSettings,
+ inValue = [1,2,3],
+ inKeyList=["NewKeyDict","NewKeyList"]):
+ # result inGSettings: {
+ # ... another keys in gSettings ...,
+ # "NewKeyDict":{
+ # "NewKeyList":[
+ # "NewValue",
+ # 1,
+ # 2,
+ # 3
+ # ]
+ # }
+ #}
:param inGSettings: Global settings dict (singleton)
- :param inValue:
- :param inKeyList:
+ :param inValue: List with values to be merged with list in gSettings
+ :param inKeyList: List of the nested keys (see example)
:return: True every time
"""
if inKeyList is None: inKeyList = []
@@ -521,12 +565,27 @@ def GSettingsKeyListValueOperatorPlus(inGSettings, inValue, inKeyList=None):
def ProcessorAliasDefCreate(inGSettings, inDef, inAliasStr=None):
"""
Create alias for def (can be used in ActivityItem in field Def)
+ !WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can't transmit Python def object out of the Python environment)
+
+ .. code-block:: python
+
+ # USAGE
+ from pyOpenRPA import Orchestrator
+
+ def TestDef():
+ pass
+ lAliasStr = Orchestrator.ProcessorAliasDefCreate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+ # Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr)
:param inGSettings: Global settings dict (singleton)
- :param inDef:
- :param inAliasStr:
- :return: str Alias
+ :param inDef: Def
+ :param inAliasStr: String alias for associated def
+ :return: str Alias string (Alias can be regenerated if previous alias was occupied)
"""
+ #TODO Pay attention - New alias can be used too - need to create more complex algorythm to create new alias!
lL = inGSettings["Logger"]
if inAliasStr is None: inAliasStr = str(inDef)
# Check if key is not exists
@@ -538,12 +597,26 @@ def ProcessorAliasDefCreate(inGSettings, inDef, inAliasStr=None):
def ProcessorAliasDefUpdate(inGSettings, inDef, inAliasStr):
"""
- Update alias for def (can be used in ActivityItem in field Def)
+ Update alias for def (can be used in ActivityItem in field Def).
+ !WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can't transmit Python def object out of the Python environment)
+
+ .. code-block:: python
+
+ # USAGE
+ from pyOpenRPA import Orchestrator
+
+ def TestDef():
+ pass
+ Orchestrator.ProcessorAliasDefUpdate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+ # Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias")
:param inGSettings: Global settings dict (singleton)
- :param inDef:
- :param inAliasStr:
- :return: str Alias
+ :param inDef: Def
+ :param inAliasStr: String alias for associated def
+ :return: str Alias string
"""
if callable(inDef): inGSettings["ProcessorDict"]["AliasDefDict"][inAliasStr] = inDef
else: raise Exception(f"pyOpenRPA Exception: You can't use Orchestrator.ProcessorAliasDefUpdate with arg 'inDef' string value. inDef is '{inDef}', inAliasStr is '{inAliasStr}'")
@@ -553,11 +626,56 @@ def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSet
"""
Create ActivityItem
- :param inDef:
- :param inArgList:
- :param inArgDict:
- :param inArgGSettingsStr:
- :param inArgLoggerStr:
+ .. code-block:: python
+
+ # USAGE
+ from pyOpenRPA import Orchestrator
+
+ # EXAMPLE 1
+ def TestDef(inArg1Str, inGSettings, inLogger):
+ pass
+ lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+ inDef = TestDef,
+ inArgList=[],
+ inArgDict={"inArg1Str": "ArgValueStr"},
+ inArgGSettingsStr = "inGSettings",
+ inArgLoggerStr = "inLogger")
+ # lActivityItem:
+ # {
+ # "Def":TestDef,
+ # "ArgList":inArgList,
+ # "ArgDict":inArgDict,
+ # "ArgGSettings": "inArgGSettings",
+ # "ArgLogger": "inLogger"
+ # }
+
+ # EXAMPLE 2
+ def TestDef(inArg1Str):
+ pass
+ Orchestrator.ProcessorAliasDefUpdate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+ lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+ inDef = "TestDefAlias",
+ inArgList=[],
+ inArgDict={"inArg1Str": "ArgValueStr"},
+ inArgGSettingsStr = None,
+ inArgLoggerStr = None)
+ # lActivityItem:
+ # {
+ # "Def":"TestDefAlias",
+ # "ArgList":inArgList,
+ # "ArgDict":inArgDict,
+ # "ArgGSettings": None,
+ # "ArgLogger": None
+ # }
+
+ :param inDef: def link or def alias (look gSettings["Processor"]["AliasDefDict"])
+ :param inArgList: Args list for the Def
+ :param inArgDict: Args dict for the def
+ :param inArgGSettingsStr: Name of def argument of the GSettings dict
+ :param inArgLoggerStr: Name of def argument of the logging object
:return: {}
"""
if inArgList is None: inArgList=[]
diff --git a/Wiki/ENG_Guide/doctrees/Orchestrator/01_Orchestrator.doctree b/Wiki/ENG_Guide/doctrees/Orchestrator/01_Orchestrator.doctree
new file mode 100644
index 00000000..30351a56
Binary files /dev/null and b/Wiki/ENG_Guide/doctrees/Orchestrator/01_Orchestrator.doctree differ
diff --git a/Wiki/ENG_Guide/doctrees/Orchestrator/02_Defs.doctree b/Wiki/ENG_Guide/doctrees/Orchestrator/02_Defs.doctree
new file mode 100644
index 00000000..67a92a26
Binary files /dev/null and b/Wiki/ENG_Guide/doctrees/Orchestrator/02_Defs.doctree differ
diff --git a/Wiki/ENG_Guide/doctrees/Orchestrator/03_gSettingsTemplate.doctree b/Wiki/ENG_Guide/doctrees/Orchestrator/03_gSettingsTemplate.doctree
new file mode 100644
index 00000000..ad408c0a
Binary files /dev/null and b/Wiki/ENG_Guide/doctrees/Orchestrator/03_gSettingsTemplate.doctree differ
diff --git a/Wiki/ENG_Guide/doctrees/Orchestrator/04_HowToStart.doctree b/Wiki/ENG_Guide/doctrees/Orchestrator/04_HowToStart.doctree
new file mode 100644
index 00000000..6a8e8294
Binary files /dev/null and b/Wiki/ENG_Guide/doctrees/Orchestrator/04_HowToStart.doctree differ
diff --git a/Wiki/ENG_Guide/html/.buildinfo b/Wiki/ENG_Guide/html/.buildinfo
index 5f28f966..2a953b20 100644
--- a/Wiki/ENG_Guide/html/.buildinfo
+++ b/Wiki/ENG_Guide/html/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 428b1a8b711af25fb408c9d4784014f7
+config: b242bb7d21650146bd8bbd75ad743c60
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/Wiki/ENG_Guide/html/Orchestrator/01_Orchestrator.html b/Wiki/ENG_Guide/html/Orchestrator/01_Orchestrator.html
new file mode 100644
index 00000000..e0390d6a
--- /dev/null
+++ b/Wiki/ENG_Guide/html/Orchestrator/01_Orchestrator.html
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+
+
+
+ 1. Description — pyOpenRPA v1.2.0 documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pyOpenRPA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1. Description
+
pyOpenRPA Orchestrator is the executable process.
+
The features of the orchestrator is:
+- Centralized/decentralized user control interface (applicable and for business users and for technical users). Web based, support desktop, tablet, phone.
+- Automatized robots control (customized algorithms, robots scheduling)
+- Source code mega flexibility: Light Orchestrator architecture is good for own customization
+
+
Global settings dict concept
+
pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
+
Because of module compexity, we use 1 init arg - inGSettings
+inGSettings is a complex dictionary which has all reqired parameters for the module execution.
+
The description of the GSettings you can find in executable module details.
+
+
+
+
Orchestrator architecture
+
Orchestrator has several source code components:
+- User/robot activity consolidated queue single thread (Processor)
+- User/robot activity asynchonus many threads (Processor)
+- Scheduler single thread (main)
+- RDP keep active many thread
+- Autocleaner single thread
+- GUI keep active single thread
+- HTTP web server single thread (create user socket threads)
+-
+
Below you can find more information about all of the component.
+
+
+
Component Processor
+
Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
+
Async - Create New thread to execute the activity list
+
+
List of the activity item
+
+
Activity item is universal mechanism to execute different algorythms from any sources.
+The core feature of the Activity is to call python defs with args and kwargs.
+If you need to init do some activity you can write some python def, then create Activity item with current def.
+ATTENTION: In some cases (such as web transmition), when you can’t transmit python def as object you can use symbolic names for python defs. It is apply you to init all of you want from the web UI.
+
?Why i cant transmit python def from the web
+Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
+
+
Note
+
Example
+{
+
+“Def”:”DefAliasTest”, # def link or def alias (look gSettings[“Processor”][“AliasDefDict”])
+“ArgList”:[1,2,3], # Args list
+“ArgDict”:{“ttt”:1,”222”:2,”dsd”:3}, # Args dictionary
+“ArgGSettings”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+“ArgLogger”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+
+
}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/Orchestrator/Orchestrator.html b/Wiki/ENG_Guide/html/Orchestrator/02_Defs.html
similarity index 82%
rename from Wiki/ENG_Guide/html/Orchestrator/Orchestrator.html
rename to Wiki/ENG_Guide/html/Orchestrator/02_Defs.html
index 577c78ce..53ec3667 100644
--- a/Wiki/ENG_Guide/html/Orchestrator/Orchestrator.html
+++ b/Wiki/ENG_Guide/html/Orchestrator/02_Defs.html
@@ -7,7 +7,7 @@
- Description — pyOpenRPA v1.2.0 documentation
+ 2. Defs — pyOpenRPA v1.2.0 documentation
@@ -38,8 +38,8 @@
-
-
+
+
@@ -94,9 +94,14 @@
ORCHESTRATOR
@@ -145,13 +150,13 @@
»
- Description
+ 2. Defs
- View page source
+ View page source
@@ -164,75 +169,27 @@
-
-
Description
-
pyOpenRPA Orchestrator is the executable process.
-
The features of the orchestrator is:
-- Centralized/decentralized user control interface (applicable and for business users and for technical users). Web based, support desktop, tablet, phone.
-- Automatized robots control (customized algorithms, robots scheduling)
-- Source code mega flexibility: Light Orchestrator architecture is good for own customization
-
-
Global settings dict concept
-
pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
-
Because of module compexity, we use 1 init arg - inGSettings
-inGSettings is a complex dictionary which has all reqired parameters for the module execution.
-
The description of the GSettings you can find in executable module details.
-
-
-
-
Orchestrator architecture
-
Orchestrator has several source code components:
-- User/robot activity consolidated queue single thread (Processor)
-- User/robot activity asynchonus many threads (Processor)
-- Scheduler single thread (main)
-- RDP keep active many thread
-- Autocleaner single thread
-- GUI keep active single thread
-- HTTP web server single thread (create user socket threads)
--
-
Below you can find more information about all of the component.
-
-
-
Component Processor
-
Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
-
Async - Create New thread to execute the activity list
-
-
Liast of the activity item
-
-
Activity item is universal mechanism to execute different algorythms from any sources.
-The core feature of the Activity is to call python defs with args and kwargs.
-If you need to init do some activity you can write some python def, then create Activity item with current def.
-ATTENTION: In some cases (such as web transmition), when you can’t transmit python def as object you can use symbolic names for python defs. It is apply you to init all of you want from the web UI.
-
?Why i cant transmit python def from the web
-Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
-{
-
-“Def”:”DefAliasTest”, # def link or def alias (look gSettings[“Processor”][“AliasDefDict”])
-“ArgList”:[1,2,3], # Args list
-“ArgDict”:{“ttt”:1,”222”:2,”dsd”:3}, # Args dictionary
-“ArgGSettings”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-“ArgLogger”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-
-
}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
+
+
2. Defs
+
+
pyOpenRPA.Orchestrator.__Orchestrator__
+
# EXAMPLE 1
+from pyOpenRPA import Orchestrator
+Orchestrator . OSCMD ( inCMDStr = "git status" , inRunAsyncBool = True )
+
+# EXAMPLE 2
+from pyOpenRPA.Orchestrator import __Orchestrator__
+__Orchestrator__ . OSCMD ( inCMDStr = "git status" , inRunAsyncBool = True )
+
-
-
pyOpenRPA Orchestrator
-
+
pyOpenRPA.Orchestrator.__Orchestrator__.
AgentActivityItemAdd
( inGSettings , inHostNameStr , inUserStr , inActivityItemDict ) [source]
Add activity in AgentDict. Check if item is created
+
Parameters
Returns
-True - CMD was executed successfully
+
+# OLD > True - CMD was executed successfully
+{ “OutStr”: <> # Result string
+“IsResponsibleBool”: True|False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK
+
+
+
+
+}
+
@@ -1080,6 +1156,10 @@ Var 2 (Backward compatibility): inGSettings, inRDPSessionKeyStr, inHostStr, inP
+
+
@@ -1089,8 +1169,8 @@ Var 2 (Backward compatibility): inGSettings, inRDPSessionKeyStr, inHostStr, inP
diff --git a/Wiki/ENG_Guide/html/Orchestrator/gSettingsTemplate.html b/Wiki/ENG_Guide/html/Orchestrator/03_gSettingsTemplate.html
similarity index 97%
rename from Wiki/ENG_Guide/html/Orchestrator/gSettingsTemplate.html
rename to Wiki/ENG_Guide/html/Orchestrator/03_gSettingsTemplate.html
index 89709151..ea288e83 100644
--- a/Wiki/ENG_Guide/html/Orchestrator/gSettingsTemplate.html
+++ b/Wiki/ENG_Guide/html/Orchestrator/03_gSettingsTemplate.html
@@ -7,7 +7,7 @@
- gSettings Template — pyOpenRPA v1.2.0 documentation
+ 3. gSettings Template — pyOpenRPA v1.2.0 documentation
@@ -38,7 +38,8 @@
-
+
+
@@ -93,9 +94,10 @@
ORCHESTRATOR
@@ -144,13 +146,13 @@
»
- gSettings Template
+ 3. gSettings Template
- View page source
+ View page source
@@ -164,7 +166,7 @@
-
gSettings Template
+
3. gSettings Template
gSettings structure
import os , logging , datetime , sys
@@ -174,7 +176,7 @@
"VersionStr" : None , # Will be filled in orchestrator,
"Autocleaner" : {
# Some gurbage is collecting in g settings. So you can configure autocleaner to periodically clear gSettings
- "IntervalSecFloat" : 600.0 , # Sec float to periodically clear gsettings
+ "IntervalSecFloat" : 3600.0 , # Sec float to periodically clear gsettings
},
"Client" : { # Settings about client web orchestrator
"Session" : {
@@ -540,7 +542,8 @@
diff --git a/Wiki/ENG_Guide/html/Orchestrator/HowToStart.html b/Wiki/ENG_Guide/html/Orchestrator/04_HowToStart.html
similarity index 93%
rename from Wiki/ENG_Guide/html/Orchestrator/HowToStart.html
rename to Wiki/ENG_Guide/html/Orchestrator/04_HowToStart.html
index 8fb5f52d..cc5ba6f7 100644
--- a/Wiki/ENG_Guide/html/Orchestrator/HowToStart.html
+++ b/Wiki/ENG_Guide/html/Orchestrator/04_HowToStart.html
@@ -7,7 +7,7 @@
- How to start — pyOpenRPA v1.2.0 documentation
+ 4. How to start — pyOpenRPA v1.2.0 documentation
@@ -38,8 +38,7 @@
-
-
+
@@ -94,9 +93,10 @@
ORCHESTRATOR
@@ -145,13 +145,13 @@
»
- How to start
+ 4. How to start
- View page source
+ View page source
@@ -165,7 +165,7 @@
-
How to start
+
4. How to start
Start configuration example
import psutil , datetime , logging , os , sys # stdout from logging
@@ -247,8 +247,7 @@
diff --git a/Wiki/ENG_Guide/html/Robot/Robot.html b/Wiki/ENG_Guide/html/Robot/Robot.html
index b70778d7..40369b4f 100644
--- a/Wiki/ENG_Guide/html/Robot/Robot.html
+++ b/Wiki/ENG_Guide/html/Robot/Robot.html
@@ -86,7 +86,10 @@
ROBOT
STUDIO
ORCHESTRATOR
diff --git a/Wiki/ENG_Guide/html/Studio/Studio.html b/Wiki/ENG_Guide/html/Studio/Studio.html
index fdf370a5..4847152e 100644
--- a/Wiki/ENG_Guide/html/Studio/Studio.html
+++ b/Wiki/ENG_Guide/html/Studio/Studio.html
@@ -38,7 +38,7 @@
-
+
@@ -94,9 +94,10 @@
ORCHESTRATOR
@@ -175,7 +176,7 @@
diff --git a/Wiki/ENG_Guide/html/_modules/index.html b/Wiki/ENG_Guide/html/_modules/index.html
index 30ee0c8b..cbde2c6b 100644
--- a/Wiki/ENG_Guide/html/_modules/index.html
+++ b/Wiki/ENG_Guide/html/_modules/index.html
@@ -92,9 +92,10 @@
ORCHESTRATOR
diff --git a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html
index 33199616..67feccc2 100644
--- a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html
+++ b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html
@@ -92,9 +92,10 @@
ORCHESTRATOR
@@ -190,10 +191,15 @@
# AGENT DEFS
-[docs] def AgentActivityItemAdd ( inGSettings , inHostNameStr , inUserStr , inActivityItemDict ):
+
[docs] def AgentActivityItemAdd ( inGSettings , inHostNameStr , inUserStr , inActivityItemDict ):
"""
Add activity in AgentDict. Check if item is created
+
.. code-block:: python
+
+
# USAGE
+
import this
+
:param inGSettings: Global settings dict (singleton)
:param inHostNameStr: Agent host name
:param inUserStr: User login, where agent is based
@@ -207,7 +213,7 @@
lThisAgentDict [ "ActivityList" ] . append ( inActivityItemDict )
-
[docs] def AgentOSCMD ( inGSettings , inHostNameStr , inUserStr , inCMDStr , inRunAsyncBool = True ):
+
[docs] def AgentOSCMD ( inGSettings , inHostNameStr , inUserStr , inCMDStr , inRunAsyncBool = True ):
"""
pyOpenRPA.Agent: Send CMD to OS. Result return to log + Orchestrator by the A2O connection
def OSCMD(inCMDStr, inRunAsyncBool=True, inGSettings=None):
@@ -229,7 +235,7 @@
#Send item in AgentDict for the futher data transmition
AgentActivityItemAdd ( inGSettings = inGSettings , inHostNameStr = inHostNameStr , inUserStr = inUserStr , inActivityItemDict = lActivityItemDict )
-
[docs] def AgentOSFileBinaryDataBytesCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataBytes ):
+
[docs] def AgentOSFileBinaryDataBytesCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataBytes ):
"""
pyOpenRPA.Agent: Create binary file by the base64 string (safe for JSON transmition)
def OSFileBinaryDataBase64StrCreate(inFilePathStr, inFileDataBase64Str,inGSettings = None):
@@ -254,7 +260,7 @@
AgentActivityItemAdd ( inGSettings = inGSettings , inHostNameStr = inHostNameStr , inUserStr = inUserStr , inActivityItemDict = lActivityItemDict )
-
[docs] def AgentOSFileBinaryDataBase64StrCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataBase64Str ):
+
[docs] def AgentOSFileBinaryDataBase64StrCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataBase64Str ):
"""
pyOpenRPA.Agent: Create binary file by the base64 string (safe for JSON transmission)
def OSFileBinaryDataBase64StrCreate(inFilePathStr, inFileDataBase64Str,inGSettings = None):
@@ -278,7 +284,7 @@
AgentActivityItemAdd ( inGSettings = inGSettings , inHostNameStr = inHostNameStr , inUserStr = inUserStr , inActivityItemDict = lActivityItemDict )
# Send text file to Agent (string)
-
[docs] def AgentOSFileTextDataStrCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataStr , inEncodingStr = "utf-8" ):
+
[docs] def AgentOSFileTextDataStrCreate ( inGSettings , inHostNameStr , inUserStr , inFilePathStr , inFileDataStr , inEncodingStr = "utf-8" ):
"""
pyOpenRPA.Agent: Create text file by the string
def OSFileTextDataStrCreate(inFilePathStr, inFileDataStr, inEncodingStr = "utf-8",inGSettings = None):
@@ -303,7 +309,7 @@
AgentActivityItemAdd ( inGSettings = inGSettings , inHostNameStr = inHostNameStr , inUserStr = inUserStr , inActivityItemDict = lActivityItemDict )
# OS DEFS
-
[docs] def OSCredentialsVerify ( inUserStr , inPasswordStr , inDomainStr = "" ): ##
+
[docs] def OSCredentialsVerify ( inUserStr , inPasswordStr , inDomainStr = "" ): ##
"""
Verify user credentials in windows. Return bool
@@ -322,7 +328,7 @@
else :
return True
-
[docs] def OSCMD ( inCMDStr , inRunAsyncBool = True , inLogger = None ):
+
[docs] def OSCMD ( inCMDStr , inRunAsyncBool = True , inLogger = None ):
"""
OS send command in shell locally
@@ -363,7 +369,7 @@
#lResultCMDRun = 1 # os.system(lCMDCode)
return lResultStr
-
[docs] def OrchestratorRestart ( inGSettings = None ):
+
[docs] def OrchestratorRestart ( inGSettings = None ):
"""
Orchestrator restart
@@ -377,7 +383,7 @@
os . execl ( sys . executable , os . path . abspath ( __file__ ), * sys . argv )
sys . exit ( 0 )
-
[docs] def OrchestratorSessionSave ( inGSettings = None ):
+
[docs] def OrchestratorSessionSave ( inGSettings = None ):
"""
Orchestrator session save in file _SessionLast_RDPList.json (encoding = "utf-8")
@@ -394,7 +400,7 @@
f "Orchestrator has dump the RDP list before the restart." )
return True
-
[docs] def UACKeyListCheck ( inRequest , inRoleKeyList ) -> bool :
+
[docs] def UACKeyListCheck ( inRequest , inRoleKeyList ) -> bool :
"""
Check is client is has access for the key list
@@ -404,7 +410,7 @@
"""
return inRequest . UACClientCheck ( inRoleKeyList = inRoleKeyList )
-
[docs] def UACUpdate ( inGSettings , inADLoginStr , inADStr = "" , inADIsDefaultBool = True , inURLList = None , inRoleHierarchyAllowedDict = None ):
+
[docs] def UACUpdate ( inGSettings , inADLoginStr , inADStr = "" , inADIsDefaultBool = True , inURLList = None , inRoleHierarchyAllowedDict = None ):
"""
Update user access (UAC)
@@ -439,7 +445,7 @@
# Case add default domain + user
inGSettings [ "ServerDict" ][ "AccessUsers" ][ "RuleDomainUserDict" ] . update ({( "" , inADLoginStr . upper ()): lRuleDomainUserDict })
-
[docs] def UACSuperTokenUpdate ( inGSettings , inSuperTokenStr ):
+
[docs] def UACSuperTokenUpdate ( inGSettings , inSuperTokenStr ):
"""
Add supertoken for the all access (it is need for the robot communication without human)
@@ -457,7 +463,7 @@
# # # # # # # # # # # # # # # # # # # # # # #
-
[docs] def WebURLConnectDef ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inDef , inContentTypeStr = "application/octet-stream" ):
+
[docs] def WebURLConnectDef ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inDef , inContentTypeStr = "application/octet-stream" ):
"""
Connect URL to DEF
"inMethodStr":"GET|POST",
@@ -486,7 +492,7 @@
inGSettings [ "ServerDict" ][ "URLList" ] . append ( lURLItemDict )
-
[docs] def WebURLConnectFolder ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inFolderPathStr ):
+
[docs] def WebURLConnectFolder ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inFolderPathStr ):
"""
Connect URL to Folder
"inMethodStr":"GET|POST",
@@ -516,7 +522,7 @@
inGSettings [ "ServerDict" ][ "URLList" ] . append ( lURLItemDict )
-
[docs] def WebURLConnectFile ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inFilePathStr , inContentTypeStr = "application/octet-stream" ):
+
[docs] def WebURLConnectFile ( inGSettings , inMethodStr , inURLStr , inMatchTypeStr , inFilePathStr , inContentTypeStr = "application/octet-stream" ):
"""
Connect URL to File
"inMethodStr":"GET|POST",
@@ -542,7 +548,7 @@
}
inGSettings [ "ServerDict" ][ "URLList" ] . append ( lURLItemDict )
-
[docs] def WebCPUpdate ( inGSettings , inCPKeyStr , inHTMLRenderDef = None , inJSONGeneratorDef = None , inJSInitGeneratorDef = None ):
+
[docs] def WebCPUpdate ( inGSettings , inCPKeyStr , inHTMLRenderDef = None , inJSONGeneratorDef = None , inJSInitGeneratorDef = None ):
"""
Add control panel HTML, JSON generator or JS when page init
@@ -565,7 +571,7 @@
if inJSInitGeneratorDef is not None :
inGSettings [ "CPDict" ][ inCPKeyStr ][ "JSInitGeneratorDef" ] = inJSInitGeneratorDef
-
[docs] def WebUserInfoGet ( inRequest ):
+
[docs] def WebUserInfoGet ( inRequest ):
"""
Return User info about request
@@ -576,7 +582,7 @@
lUserUpperStr = inRequest . OpenRPA [ "User" ] . upper ()
return { "DomainUpperStr" : lDomainUpperStr , "UserNameUpperStr" : lUserUpperStr }
-
[docs] def WebUserIsSuperToken ( inRequest , inGSettings ):
+
[docs] def WebUserIsSuperToken ( inRequest , inGSettings ):
"""
Return bool if request is authentificated with supetoken (token which is never expires)
@@ -589,7 +595,7 @@
lIsSuperTokenBool = inGSettings . get ( "ServerDict" , {}) . get ( "AccessUsers" , {}) . get ( "AuthTokensDict" , {}) . get ( inRequest . OpenRPA [ "AuthToken" ], {}) . get ( "FlagDoNotExpire" , False )
return lIsSuperTokenBool
-
[docs] def WebUserUACHierarchyGet ( inRequest ):
+
[docs] def WebUserUACHierarchyGet ( inRequest ):
"""
Return User UAC Hierarchy DICT Return {...}
@@ -599,7 +605,7 @@
return inRequest . UserRoleHierarchyGet ()
## GSettings defs
-
[docs] def GSettingsKeyListValueSet ( inGSettings , inValue , inKeyList = None ):
+
[docs] def GSettingsKeyListValueSet ( inGSettings , inValue , inKeyList = None ):
"""
Set value in GSettings by the key list
@@ -620,7 +626,7 @@
lDict [ inKeyList [ - 1 ]] = inValue #Set value
return True
-
[docs] def GSettingsKeyListValueGet ( inGSettings , inKeyList = None ):
+
[docs] def GSettingsKeyListValueGet ( inGSettings , inKeyList = None ):
"""
Get the value from the GSettings by the key list
@@ -639,13 +645,31 @@
lDict = lDict [ lItem2 ]
return lDict . get ( inKeyList [ - 1 ], None )
-
[docs] def GSettingsKeyListValueAppend ( inGSettings , inValue , inKeyList = None ):
+
[docs] def GSettingsKeyListValueAppend ( inGSettings , inValue , inKeyList = None ):
"""
Append value in GSettings by the key list
+
.. code-block:: python
+
+
# USAGE
+
from pyOpenRPA import Orchestrator
+
+
Orchestrator.GSettingsKeyListValueAppend(
+
inGSettings = gSettings,
+
inValue = "NewValue",
+
inKeyList=["NewKeyDict","NewKeyList"]):
+
# result inGSettings: {
+
# ... another keys in gSettings ...,
+
# "NewKeyDict":{
+
# "NewKeyList":[
+
# "NewValue"
+
# ]
+
# }
+
#}
+
:param inGSettings: Global settings dict (singleton)
-
:param inValue:
-
:param inKeyList:
+
:param inValue: Any value to be appended in gSettings Dict by the key list
+
:param inKeyList: List of the nested keys (see example)
:return: True every time
"""
if inKeyList is None : inKeyList = []
@@ -660,13 +684,34 @@
lDict [ inKeyList [ - 1 ]] . append ( inValue ) #Set value
return True
-
[docs] def GSettingsKeyListValueOperatorPlus ( inGSettings , inValue , inKeyList = None ):
+
[docs] def GSettingsKeyListValueOperatorPlus ( inGSettings , inValue , inKeyList = None ):
"""
-
Operator plus value in GSettings by the key list
+
Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList)
+
+
.. code-block:: python
+
+
# USAGE
+
from pyOpenRPA import Orchestrator
+
+
Orchestrator.GSettingsKeyListValueOperatorPlus(
+
inGSettings = gSettings,
+
inValue = [1,2,3],
+
inKeyList=["NewKeyDict","NewKeyList"]):
+
# result inGSettings: {
+
# ... another keys in gSettings ...,
+
# "NewKeyDict":{
+
# "NewKeyList":[
+
# "NewValue",
+
# 1,
+
# 2,
+
# 3
+
# ]
+
# }
+
#}
:param inGSettings: Global settings dict (singleton)
-
:param inValue:
-
:param inKeyList:
+
:param inValue: List with values to be merged with list in gSettings
+
:param inKeyList: List of the nested keys (see example)
:return: True every time
"""
if inKeyList is None : inKeyList = []
@@ -681,15 +726,30 @@
lDict [ inKeyList [ - 1 ]] += inValue #Set value
return True
-
[docs] def ProcessorAliasDefCreate ( inGSettings , inDef , inAliasStr = None ):
+
[docs] def ProcessorAliasDefCreate ( inGSettings , inDef , inAliasStr = None ):
"""
Create alias for def (can be used in ActivityItem in field Def)
+
!WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can't transmit Python def object out of the Python environment)
+
+
.. code-block:: python
+
+
# USAGE
+
from pyOpenRPA import Orchestrator
+
+
def TestDef():
+
pass
+
lAliasStr = Orchestrator.ProcessorAliasDefCreate(
+
inGSettings = gSettings,
+
inDef = TestDef,
+
inAliasStr="TestDefAlias")
+
# Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr)
:param inGSettings: Global settings dict (singleton)
-
:param inDef:
-
:param inAliasStr:
-
:return: str Alias
+
:param inDef: Def
+
:param inAliasStr: String alias for associated def
+
:return: str Alias string (Alias can be regenerated if previous alias was occupied)
"""
+
#TODO Pay attention - New alias can be used too - need to create more complex algorythm to create new alias!
lL = inGSettings [ "Logger" ]
if inAliasStr is None : inAliasStr = str ( inDef )
# Check if key is not exists
@@ -699,28 +759,87 @@
inGSettings [ "ProcessorDict" ][ "AliasDefDict" ][ inAliasStr ] = inDef
return inAliasStr
-
[docs] def ProcessorAliasDefUpdate ( inGSettings , inDef , inAliasStr ):
+
[docs] def ProcessorAliasDefUpdate ( inGSettings , inDef , inAliasStr ):
"""
-
Update alias for def (can be used in ActivityItem in field Def)
+
Update alias for def (can be used in ActivityItem in field Def).
+
!WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can't transmit Python def object out of the Python environment)
+
+
.. code-block:: python
+
+
# USAGE
+
from pyOpenRPA import Orchestrator
+
+
def TestDef():
+
pass
+
Orchestrator.ProcessorAliasDefUpdate(
+
inGSettings = gSettings,
+
inDef = TestDef,
+
inAliasStr="TestDefAlias")
+
# Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias")
:param inGSettings: Global settings dict (singleton)
-
:param inDef:
-
:param inAliasStr:
-
:return: str Alias
+
:param inDef: Def
+
:param inAliasStr: String alias for associated def
+
:return: str Alias string
"""
if callable ( inDef ): inGSettings [ "ProcessorDict" ][ "AliasDefDict" ][ inAliasStr ] = inDef
else : raise Exception ( f "pyOpenRPA Exception: You can't use Orchestrator.ProcessorAliasDefUpdate with arg 'inDef' string value. inDef is ' { inDef } ', inAliasStr is ' { inAliasStr } '" )
return inAliasStr
-
[docs] def ProcessorActivityItemCreate ( inDef , inArgList = None , inArgDict = None , inArgGSettingsStr = None , inArgLoggerStr = None ):
+
[docs] def ProcessorActivityItemCreate ( inDef , inArgList = None , inArgDict = None , inArgGSettingsStr = None , inArgLoggerStr = None ):
"""
Create ActivityItem
-
:param inDef:
-
:param inArgList:
-
:param inArgDict:
-
:param inArgGSettingsStr:
-
:param inArgLoggerStr:
+
.. code-block:: python
+
+
# USAGE
+
from pyOpenRPA import Orchestrator
+
+
# EXAMPLE 1
+
def TestDef(inArg1Str, inGSettings, inLogger):
+
pass
+
lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+
inDef = TestDef,
+
inArgList=[],
+
inArgDict={"inArg1Str": "ArgValueStr"},
+
inArgGSettingsStr = "inGSettings",
+
inArgLoggerStr = "inLogger")
+
# lActivityItem:
+
# {
+
# "Def":TestDef,
+
# "ArgList":inArgList,
+
# "ArgDict":inArgDict,
+
# "ArgGSettings": "inArgGSettings",
+
# "ArgLogger": "inLogger"
+
# }
+
+
# EXAMPLE 2
+
def TestDef(inArg1Str):
+
pass
+
Orchestrator.ProcessorAliasDefUpdate(
+
inGSettings = gSettings,
+
inDef = TestDef,
+
inAliasStr="TestDefAlias")
+
lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+
inDef = "TestDefAlias",
+
inArgList=[],
+
inArgDict={"inArg1Str": "ArgValueStr"},
+
inArgGSettingsStr = None,
+
inArgLoggerStr = None)
+
# lActivityItem:
+
# {
+
# "Def":"TestDefAlias",
+
# "ArgList":inArgList,
+
# "ArgDict":inArgDict,
+
# "ArgGSettings": None,
+
# "ArgLogger": None
+
# }
+
+
:param inDef: def link or def alias (look gSettings["Processor"]["AliasDefDict"])
+
:param inArgList: Args list for the Def
+
:param inArgDict: Args dict for the def
+
:param inArgGSettingsStr: Name of def argument of the GSettings dict
+
:param inArgLoggerStr: Name of def argument of the logging object
:return: {}
"""
if inArgList is None : inArgList = []
@@ -734,7 +853,7 @@
}
return lActivityItemDict
-
[docs] def ProcessorActivityItemAppend ( inGSettings , inDef , inArgList = None , inArgDict = None , inArgGSettingsStr = None , inArgLoggerStr = None ):
+
[docs] def ProcessorActivityItemAppend ( inGSettings , inDef , inArgList = None , inArgDict = None , inArgGSettingsStr = None , inArgLoggerStr = None ):
"""
Add Activity item in Processor list
@@ -759,7 +878,7 @@
inGSettings [ "ProcessorDict" ][ "ActivityList" ] += lActivityList
## Process defs
-
[docs] def ProcessIsStarted ( inProcessNameWOExeStr ): # Check if process is started
+
[docs] def ProcessIsStarted ( inProcessNameWOExeStr ): # Check if process is started
"""
Check if there is any running process that contains the given name processName.
@@ -776,7 +895,7 @@
pass
return False
-
[docs] def ProcessStart ( inPathStr , inArgList , inStopProcessNameWOExeStr = None ):
+
[docs] def ProcessStart ( inPathStr , inArgList , inStopProcessNameWOExeStr = None ):
"""
Start process locally [optional: if task name is not started]
@@ -800,7 +919,7 @@
lItemArgs . extend ( inArgList )
subprocess . Popen ( lItemArgs , shell = True )
-
[docs] def ProcessStop ( inProcessNameWOExeStr , inCloseForceBool , inUserNameStr = " %u sername%" ):
+
[docs] def ProcessStop ( inProcessNameWOExeStr , inCloseForceBool , inUserNameStr = " %u sername%" ):
"""
Stop process
@@ -826,7 +945,7 @@
# Kill process
os . system ( lActivityCloseCommand )
-
[docs] def ProcessListGet ( inProcessNameWOExeList = None ):
+
[docs] def ProcessListGet ( inProcessNameWOExeList = None ):
"""
Check activity of the list of processes
@@ -860,7 +979,7 @@
return lResult
# Python def - start module function
-
[docs] def PythonStart ( inModulePathStr , inDefNameStr , inArgList = None , inArgDict = None , inLogger = None ):
+
[docs] def PythonStart ( inModulePathStr , inDefNameStr , inArgList = None , inArgDict = None , inLogger = None ):
"""
Python import module and start def
@@ -886,7 +1005,7 @@
# Scheduler
# # # # # # # # # # # # # # # # # # # # # # #
-
[docs] def SchedulerActivityTimeAddWeekly ( inGSettings , inTimeHHMMStr = "23:55:" , inWeekdayList = None , inActivityList = None ):
+
[docs] def SchedulerActivityTimeAddWeekly ( inGSettings , inTimeHHMMStr = "23:55:" , inWeekdayList = None , inActivityList = None ):
"""
Add activity in time weekly
@@ -911,7 +1030,7 @@
# RDPSession
# # # # # # # # # # # # # # # # # # # # # # #
-
[docs] def RDPTemplateCreate ( inLoginStr , inPasswordStr , inHostStr = "127.0.0.1" , inPortInt = 3389 , inWidthPXInt = 1680 , inHeightPXInt = 1050 ,
+
[docs] def RDPTemplateCreate ( inLoginStr , inPasswordStr , inHostStr = "127.0.0.1" , inPortInt = 3389 , inWidthPXInt = 1680 , inHeightPXInt = 1050 ,
inUseBothMonitorBool = False , inDepthBitInt = 32 , inSharedDriveList = None ):
"""
Create some RDP template dict to use it when connect/reconnect
@@ -953,7 +1072,7 @@
# TODO Search dublicates in GSettings RDPlist !
# Return list if dublicates
-
[docs] def RDPSessionDublicatesResolve ( inGSettings ):
+
[docs] def RDPSessionDublicatesResolve ( inGSettings ):
"""
Search dublicates in GSettings RDPlist
!def is developing!
@@ -965,7 +1084,7 @@
#for lItemKeyStr in inGSettings["RobotRDPActive"]["RDPList"]:
# lItemDict = inGSettings["RobotRDPActive"]["RDPList"][lItemKeyStr]
-
[docs] def RDPSessionConnect ( inGSettings , inRDPSessionKeyStr , inRDPTemplateDict = None , inHostStr = None , inPortStr = None , inLoginStr = None , inPasswordStr = None ):
+
[docs] def RDPSessionConnect ( inGSettings , inRDPSessionKeyStr , inRDPTemplateDict = None , inHostStr = None , inPortStr = None , inLoginStr = None , inPasswordStr = None ):
"""
Create new RDPSession in RobotRDPActive. Attention - activity will be ignored if key is exists
2 way of the use
@@ -1009,7 +1128,7 @@
if inGSettings [ "Logger" ]: inGSettings [ "Logger" ] . warning ( f "RDP session was not created because it is alredy exists in the RDPList. Use RDPSessionReconnect if you want to update RDP configuration." )
return True
-
[docs] def RDPSessionDisconnect ( inGSettings , inRDPSessionKeyStr , inBreakTriggerProcessWOExeList = None ):
+
[docs] def RDPSessionDisconnect ( inGSettings , inRDPSessionKeyStr , inBreakTriggerProcessWOExeList = None ):
"""
Disconnect the RDP session
@@ -1042,7 +1161,7 @@
Connector . SystemRDPWarningClickOk () # Click all warning messages
return True
-
[docs] def RDPSessionReconnect ( inGSettings , inRDPSessionKeyStr , inRDPTemplateDict = None ):
+
[docs] def RDPSessionReconnect ( inGSettings , inRDPSessionKeyStr , inRDPTemplateDict = None ):
"""
RDP Session reconnect
@@ -1073,7 +1192,7 @@
Connector . Session ( lRDPConfigurationItem )
return True
-
[docs] def RDPSessionMonitorStop ( inGSettings , inRDPSessionKeyStr ):
+
[docs] def RDPSessionMonitorStop ( inGSettings , inRDPSessionKeyStr ):
"""
Stop track the RDP session. Current def dont kill RDP session - only stop to track it (it can give )
@@ -1085,7 +1204,7 @@
inGSettings [ "RobotRDPActive" ][ "RDPList" ] . pop ( inRDPSessionKeyStr , None ) # Remove item from RDPList
return lResult
-
[docs] def RDPSessionLogoff ( inGSettings , inRDPSessionKeyStr , inBreakTriggerProcessWOExeList = None ):
+
[docs] def RDPSessionLogoff ( inGSettings , inRDPSessionKeyStr , inBreakTriggerProcessWOExeList = None ):
"""
Logoff the RDP session
@@ -1121,7 +1240,7 @@
inGSettings [ "RobotRDPActive" ][ "RDPList" ] . pop ( inRDPSessionKeyStr , None ) # Remove item from RDPList
return lResult
-
[docs] def RDPSessionResponsibilityCheck ( inGSettings , inRDPSessionKeyStr ):
+
[docs] def RDPSessionResponsibilityCheck ( inGSettings , inRDPSessionKeyStr ):
"""
Check RDP Session responsibility TODO NEED DEV + TEST
@@ -1164,7 +1283,7 @@
lDoCheckResponsibilityCountCurrent += 1
return True
-
[docs] def RDPSessionProcessStartIfNotRunning ( inGSettings , inRDPSessionKeyStr , inProcessNameWEXEStr , inFilePathStr , inFlagGetAbsPathBool = True ):
+
[docs] def RDPSessionProcessStartIfNotRunning ( inGSettings , inRDPSessionKeyStr , inProcessNameWEXEStr , inFilePathStr , inFlagGetAbsPathBool = True ):
"""
Start process if it is not running
@@ -1197,38 +1316,49 @@
inRDPConfigurationItem = inGSettings [ "RobotRDPActive" ][ "RDPList" ][ inRDPSessionKeyStr ])
return lResult
-
[docs] def RDPSessionCMDRun ( inGSettings , inRDPSessionKeyStr , inCMDStr , inModeStr = "CROSSCHECK" ):
+
[docs] def RDPSessionCMDRun ( inGSettings , inRDPSessionKeyStr , inCMDStr , inModeStr = "CROSSCHECK" ):
"""
Send command in RDP session
:param inGSettings: Global settings dict (singleton)
:param inRDPSessionKeyStr:
:param inCMDStr:
-
:param inModeStr:
-
:return: True - CMD was executed successfully
+
:param inModeStr: Variants:
+
"LISTEN" - Get result of the cmd command in result;
+
"CROSSCHECK" - Check if the command was successufully sent
+
"RUN" - Run without crosscheck and get clipboard
+
:return: # OLD > True - CMD was executed successfully
+
{
+
"OutStr": <> # Result string
+
"IsResponsibleBool": True|False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK
+
}
"""
+
lResult = {
+
"OutStr" : None , # Result string
+
"IsResponsibleBool" : False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK
+
}
# Check thread
if not Core . IsProcessorThread ( inGSettings = inGSettings ):
if inGSettings [ "Logger" ]: inGSettings [ "Logger" ] . warning ( f "RDP def was called not from processor queue - activity will be append in the processor queue." )
-
lResult = {
+
lProcessorActivityDict = {
"Def" : RDPSessionCMDRun , # def link or def alias (look gSettings["Processor"]["AliasDefDict"])
"ArgList" : [], # Args list
"ArgDict" : { "inRDPSessionKeyStr" : inRDPSessionKeyStr , "inCMDStr" : inCMDStr , "inModeStr" : inModeStr }, # Args dictionary
"ArgGSettings" : "inGSettings" , # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
"ArgLogger" : None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
}
-
inGSettings [ "ProcessorDict" ][ "ActivityList" ] . append ( lResult )
+
inGSettings [ "ProcessorDict" ][ "ActivityList" ] . append ( lProcessorActivityDict )
else :
-
lResult = True
+
#lResult = True
# Calculate the session Hex
lSessionHex = inGSettings [ "RobotRDPActive" ][ "RDPList" ] . get ( inRDPSessionKeyStr ,{}) . get ( "SessionHex" , None )
# Run CMD
if lSessionHex :
-
Connector . SessionCMDRun ( inSessionHex = lSessionHex , inCMDCommandStr = inCMDStr , inModeStr = inModeStr , inLogger = inGSettings [ "Logger" ],
+
lResult = Connector . SessionCMDRun ( inSessionHex = lSessionHex , inCMDCommandStr = inCMDStr , inModeStr = inModeStr , inLogger = inGSettings [ "Logger" ],
inRDPConfigurationItem = inGSettings [ "RobotRDPActive" ][ "RDPList" ][ inRDPSessionKeyStr ])
return lResult
-
[docs] def RDPSessionProcessStop ( inGSettings , inRDPSessionKeyStr , inProcessNameWEXEStr , inFlagForceCloseBool ):
+
[docs] def RDPSessionProcessStop ( inGSettings , inRDPSessionKeyStr , inProcessNameWEXEStr , inFlagForceCloseBool ):
"""
Create CMD str to stop process
@@ -1261,7 +1391,7 @@
Connector . SessionCMDRun ( inSessionHex = lSessionHex , inCMDCommandStr = lCMDStr , inModeStr = "CROSSCHECK" , inLogger = inGSettings [ "Logger" ], inRDPConfigurationItem = inGSettings [ "RobotRDPActive" ][ "RDPList" ][ inRDPSessionKeyStr ])
return lResult
-
[docs] def RDPSessionFileStoredSend ( inGSettings , inRDPSessionKeyStr , inHostFilePathStr , inRDPFilePathStr ):
+
[docs] def RDPSessionFileStoredSend ( inGSettings , inRDPSessionKeyStr , inHostFilePathStr , inRDPFilePathStr ):
"""
Send file from Host to Session RDP using shared drive in RDP
@@ -1293,7 +1423,7 @@
Connector . SessionCMDRun ( inSessionHex = lSessionHex , inCMDCommandStr = lCMDStr , inModeStr = "LISTEN" , inClipboardTimeoutSec = 120 , inLogger = inGSettings [ "Logger" ], inRDPConfigurationItem = inGSettings [ "RobotRDPActive" ][ "RDPList" ][ inRDPSessionKeyStr ])
return lResult
-
[docs] def RDPSessionFileStoredRecieve ( inGSettings , inRDPSessionKeyStr , inRDPFilePathStr , inHostFilePathStr ):
+
[docs] def RDPSessionFileStoredRecieve ( inGSettings , inRDPSessionKeyStr , inRDPFilePathStr , inHostFilePathStr ):
"""
Receive file from Session RDP to Host using shared drive in RDP
@@ -1328,7 +1458,7 @@
# # # # # Start orchestrator
# # # # # # # # # # # # # # # # # # # # # # #
-
[docs] def GSettingsAutocleaner ( inGSettings ):
+
[docs] def GSettingsAutocleaner ( inGSettings ):
"""
Interval gsettings auto cleaner
@@ -1453,7 +1583,8 @@
# Orchestrator start activity
if lL : lL . info ( "Orchestrator start activity run" ) #Logging
for lActivityItem in gSettingsDict [ "OrchestratorStart" ][ "ActivityList" ]:
-
Processor . ActivityListOrDict ( lActivityItem )
+
# Processor.ActivityListOrDict(lActivityItem)
+
Processor . ActivityListExecute ( inGSettings = gSettingsDict , inActivityList = BackwardCompatibility . v1_2_0_ProcessorOld2NewActivityDict ( lActivityItem ))
# Processor thread
lProcessorThread = threading . Thread ( target = Processor . ProcessorRunSync , kwargs = { "inGSettings" : gSettingsDict , "inRobotRDPThreadControlDict" : lRobotRDPThreadControlDict })
diff --git a/Sources/GuideSphinx/Orchestrator/Orchestrator.rst b/Wiki/ENG_Guide/html/_sources/Orchestrator/01_Orchestrator.rst.txt
similarity index 70%
rename from Sources/GuideSphinx/Orchestrator/Orchestrator.rst
rename to Wiki/ENG_Guide/html/_sources/Orchestrator/01_Orchestrator.rst.txt
index b94fc25c..6004515a 100644
--- a/Sources/GuideSphinx/Orchestrator/Orchestrator.rst
+++ b/Wiki/ENG_Guide/html/_sources/Orchestrator/01_Orchestrator.rst.txt
@@ -1,6 +1,6 @@
-************************
-Description
-************************
+####################################
+1. Description
+####################################
pyOpenRPA Orchestrator is the executable process.
@@ -9,8 +9,9 @@ The features of the orchestrator is:
- Automatized robots control (customized algorithms, robots scheduling)
- Source code mega flexibility: Light Orchestrator architecture is good for own customization
+************************************
Global settings dict concept
-##################################
+************************************
pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
Because of module compexity, we use 1 init arg - inGSettings
@@ -18,9 +19,9 @@ inGSettings is a complex dictionary which has all reqired parameters for the mod
The description of the GSettings you can find in executable module details.
-
+************************************
Orchestrator how to configure
-##################################
+************************************
To init pyOpenRPA Orchestrator instance use script:
@@ -31,12 +32,10 @@ Orchestrator.Orchestrator(inGSettings=gSettings) # Call the orchestrator def
gSettings structure
-:ref:`gSettingsTemplate`.
-
-
+************************************
Orchestrator architecture
-##################################
+************************************
Orchestrator has several source code components:
- User/robot activity consolidated queue single thread (Processor)
- User/robot activity asynchonus many threads (Processor)
@@ -49,16 +48,19 @@ Orchestrator has several source code components:
Below you can find more information about all of the component.
+***************************
Component Processor
-##################################
+***************************
Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
Async - Create New thread to execute the activity list
- Activity list
-Liast of the activity item
+
+List of the activity item
- Activity item
+
Activity item is universal mechanism to execute different algorythms from any sources.
The core feature of the Activity is to call python defs with args and kwargs.
If you need to init do some activity you can write some python def, then create Activity item with current def.
@@ -66,16 +68,23 @@ ATTENTION: In some cases (such as web transmition), when you can't transmit pyth
?Why i cant transmit python def from the web
Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
-{
- "Def":"DefAliasTest", # def link or def alias (look gSettings["Processor"]["AliasDefDict"])
- "ArgList":[1,2,3], # Args list
- "ArgDict":{"ttt":1,"222":2,"dsd":3}, # Args dictionary
- "ArgGSettings": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
- "ArgLogger": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
-
-
-pyOpenRPA Orchestrator
-##################################
-.. automodule:: pyOpenRPA.Orchestrator.__Orchestrator__
- :members:
\ No newline at end of file
+
+.. note::
+ Example
+ {
+ "Def":"DefAliasTest", # def link or def alias (look gSettings["Processor"]["AliasDefDict"])
+ "ArgList":[1,2,3], # Args list
+ "ArgDict":{"ttt":1,"222":2,"dsd":3}, # Args dictionary
+ "ArgGSettings": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ "ArgLogger": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ }# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
+
+
+**********
+References
+**********
+
+`Python-sphinx`_
+
+.. target-notes::
+.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
diff --git a/Wiki/ENG_Guide/html/_sources/Orchestrator/02_Defs.rst.txt b/Wiki/ENG_Guide/html/_sources/Orchestrator/02_Defs.rst.txt
new file mode 100644
index 00000000..2be63177
--- /dev/null
+++ b/Wiki/ENG_Guide/html/_sources/Orchestrator/02_Defs.rst.txt
@@ -0,0 +1,32 @@
+####################################
+2. Defs
+####################################
+
+**************************************************
+pyOpenRPA.Orchestrator.__Orchestrator__
+**************************************************
+
+.. code-block:: python
+
+ # EXAMPLE 1
+ from pyOpenRPA import Orchestrator
+ Orchestrator.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
+
+ # EXAMPLE 2
+ from pyOpenRPA.Orchestrator import __Orchestrator__
+ __Orchestrator__.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
+
+
+
+.. automodule:: pyOpenRPA.Orchestrator.__Orchestrator__
+ :members:
+
+
+**********
+References
+**********
+
+`Python-sphinx`_
+
+.. target-notes::
+.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
diff --git a/Wiki/ENG_Guide/html/_sources/Orchestrator/gSettingsTemplate.rst.txt b/Wiki/ENG_Guide/html/_sources/Orchestrator/03_gSettingsTemplate.rst.txt
similarity index 82%
rename from Wiki/ENG_Guide/html/_sources/Orchestrator/gSettingsTemplate.rst.txt
rename to Wiki/ENG_Guide/html/_sources/Orchestrator/03_gSettingsTemplate.rst.txt
index a99645f5..4efe8d47 100644
--- a/Wiki/ENG_Guide/html/_sources/Orchestrator/gSettingsTemplate.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/Orchestrator/03_gSettingsTemplate.rst.txt
@@ -1,6 +1,6 @@
.. _gSettingsTemplate:
************************
-gSettings Template
+3. gSettings Template
************************
gSettings structure
diff --git a/Wiki/ENG_Guide/html/_sources/Orchestrator/HowToStart.rst.txt b/Wiki/ENG_Guide/html/_sources/Orchestrator/04_HowToStart.rst.txt
similarity index 89%
rename from Wiki/ENG_Guide/html/_sources/Orchestrator/HowToStart.rst.txt
rename to Wiki/ENG_Guide/html/_sources/Orchestrator/04_HowToStart.rst.txt
index e704cc56..66e056d7 100644
--- a/Wiki/ENG_Guide/html/_sources/Orchestrator/HowToStart.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/Orchestrator/04_HowToStart.rst.txt
@@ -1,5 +1,5 @@
************************
-How to start
+4. How to start
************************
Start configuration example
diff --git a/Wiki/ENG_Guide/html/_sources/index.rst.txt b/Wiki/ENG_Guide/html/_sources/index.rst.txt
index d91941ab..81357a57 100644
--- a/Wiki/ENG_Guide/html/_sources/index.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/index.rst.txt
@@ -10,7 +10,6 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: GENERAL
:glob:
- :titlesonly:
*
@@ -18,7 +17,6 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: ROBOT
:glob:
- :titlesonly:
Robot/*
@@ -26,14 +24,12 @@ Welcome to pyOpenRPA's documentation!
:maxdepth: 2
:caption: STUDIO
:glob:
- :titlesonly:
Studio/*
.. toctree::
- :maxdepth: 2
+ :maxdepth: 3
:caption: ORCHESTRATOR
:glob:
- :titlesonly:
Orchestrator/*
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/genindex.html b/Wiki/ENG_Guide/html/genindex.html
index afe2788c..ba95dcd2 100644
--- a/Wiki/ENG_Guide/html/genindex.html
+++ b/Wiki/ENG_Guide/html/genindex.html
@@ -92,9 +92,10 @@
ORCHESTRATOR
@@ -178,17 +179,17 @@
A
@@ -196,17 +197,17 @@
G
@@ -218,7 +219,7 @@
module
- pyOpenRPA.Orchestrator.__Orchestrator__
+ pyOpenRPA.Orchestrator.__Orchestrator__
pyOpenRPA.Robot.UIDesktop
@@ -229,15 +230,15 @@
O
@@ -245,29 +246,29 @@
P
@@ -285,33 +286,33 @@
R
@@ -319,7 +320,7 @@
S
@@ -327,13 +328,13 @@
U
@@ -341,21 +342,21 @@
W
diff --git a/Wiki/ENG_Guide/html/index.html b/Wiki/ENG_Guide/html/index.html
index d8f488ff..f096427a 100644
--- a/Wiki/ENG_Guide/html/index.html
+++ b/Wiki/ENG_Guide/html/index.html
@@ -93,9 +93,10 @@
ORCHESTRATOR
@@ -170,7 +171,10 @@
diff --git a/Wiki/ENG_Guide/html/objects.inv b/Wiki/ENG_Guide/html/objects.inv
index af5a98b7..766aa66d 100644
Binary files a/Wiki/ENG_Guide/html/objects.inv and b/Wiki/ENG_Guide/html/objects.inv differ
diff --git a/Wiki/ENG_Guide/html/py-modindex.html b/Wiki/ENG_Guide/html/py-modindex.html
index f9cf9418..e1ecba1a 100644
--- a/Wiki/ENG_Guide/html/py-modindex.html
+++ b/Wiki/ENG_Guide/html/py-modindex.html
@@ -95,9 +95,10 @@
ORCHESTRATOR
@@ -181,7 +182,7 @@
- pyOpenRPA.Orchestrator.__Orchestrator__
+ pyOpenRPA.Orchestrator.__Orchestrator__
diff --git a/Wiki/ENG_Guide/html/search.html b/Wiki/ENG_Guide/html/search.html
index 32761d6a..d7f7d44a 100644
--- a/Wiki/ENG_Guide/html/search.html
+++ b/Wiki/ENG_Guide/html/search.html
@@ -95,9 +95,10 @@
ORCHESTRATOR
diff --git a/Wiki/ENG_Guide/html/searchindex.js b/Wiki/ENG_Guide/html/searchindex.js
index b051edcb..0364a4bb 100644
--- a/Wiki/ENG_Guide/html/searchindex.js
+++ b/Wiki/ENG_Guide/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["Orchestrator/HowToStart","Orchestrator/Orchestrator","Orchestrator/gSettingsTemplate","Robot/Robot","Studio/Studio","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["Orchestrator\\HowToStart.rst","Orchestrator\\Orchestrator.rst","Orchestrator\\gSettingsTemplate.rst","Robot\\Robot.rst","Studio\\Studio.rst","index.rst"],objects:{"pyOpenRPA.Orchestrator":{__Orchestrator__:[1,0,0,"-"]},"pyOpenRPA.Orchestrator.__Orchestrator__":{AgentActivityItemAdd:[1,1,1,""],AgentOSCMD:[1,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[1,1,1,""],AgentOSFileBinaryDataBytesCreate:[1,1,1,""],AgentOSFileTextDataStrCreate:[1,1,1,""],GSettingsAutocleaner:[1,1,1,""],GSettingsKeyListValueAppend:[1,1,1,""],GSettingsKeyListValueGet:[1,1,1,""],GSettingsKeyListValueOperatorPlus:[1,1,1,""],GSettingsKeyListValueSet:[1,1,1,""],OSCMD:[1,1,1,""],OSCredentialsVerify:[1,1,1,""],OrchestratorRestart:[1,1,1,""],OrchestratorSessionSave:[1,1,1,""],ProcessIsStarted:[1,1,1,""],ProcessListGet:[1,1,1,""],ProcessStart:[1,1,1,""],ProcessStop:[1,1,1,""],ProcessorActivityItemAppend:[1,1,1,""],ProcessorActivityItemCreate:[1,1,1,""],ProcessorAliasDefCreate:[1,1,1,""],ProcessorAliasDefUpdate:[1,1,1,""],PythonStart:[1,1,1,""],RDPSessionCMDRun:[1,1,1,""],RDPSessionConnect:[1,1,1,""],RDPSessionDisconnect:[1,1,1,""],RDPSessionDublicatesResolve:[1,1,1,""],RDPSessionFileStoredRecieve:[1,1,1,""],RDPSessionFileStoredSend:[1,1,1,""],RDPSessionLogoff:[1,1,1,""],RDPSessionMonitorStop:[1,1,1,""],RDPSessionProcessStartIfNotRunning:[1,1,1,""],RDPSessionProcessStop:[1,1,1,""],RDPSessionReconnect:[1,1,1,""],RDPSessionResponsibilityCheck:[1,1,1,""],RDPTemplateCreate:[1,1,1,""],SchedulerActivityTimeAddWeekly:[1,1,1,""],UACKeyListCheck:[1,1,1,""],UACSuperTokenUpdate:[1,1,1,""],UACUpdate:[1,1,1,""],WebCPUpdate:[1,1,1,""],WebURLConnectDef:[1,1,1,""],WebURLConnectFile:[1,1,1,""],WebURLConnectFolder:[1,1,1,""],WebUserInfoGet:[1,1,1,""],WebUserIsSuperToken:[1,1,1,""],WebUserUACHierarchyGet:[1,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[3,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"0643":0,"100":2,"1050":[1,2],"120":2,"127":1,"1680":[1,2],"1680x1050":2,"1992":0,"222":[1,2],"300":2,"3389":[1,2],"600":2,"640x480":2,"8081":2,"\u0434\u0435\u043c\u043e\u043d\u0430":2,"\u0434\u0435\u043c\u043e\u043d\u0443":2,"\u043a":2,"\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443":2,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":2,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":2,"\u043c\u043e\u0436\u043d\u043e":2,"\u043f\u043e":2,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":2,"\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f":2,"\u043f\u043e\u0440\u0442":2,"\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435":2,"\u0441\u0435\u0440\u0432\u0435\u0440\u0430":2,"\u0441\u0435\u0442\u0435\u0432\u043e\u0435":2,"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":2,"\u0444\u0430\u0439\u043b":2,"byte":1,"case":[1,2],"default":2,"float":[1,2],"function":[1,2],"import":[0,1,2],"int":1,"new":[0,1,2],"return":[1,2],"true":[0,1,2],"try":0,"var":1,Abs:2,For:0,Has:2,THE:1,The:1,USe:2,Use:0,Will:2,__agentdictitemcreate__:2,__create__:2,__main__:0,__name__:0,__orchestrator__:1,__uacclientadmincreate__:[0,2],_sessionlast_rdplist:1,a2o:1,about:[1,2],absolut:[0,1,2],abspath:0,access:[0,1,2],accessus:2,activ:[1,2],activitydict:2,activityitem:1,activitylist:2,activitylistappendprocessorqueuebool:2,activitylistexecutebool:2,activitytimelist:2,actual:1,add:[0,1,2],addhandl:2,address:2,admindict:[0,2],after:[0,1,2],agent:1,agentactivityitemadd:1,agentdict:[1,2],agentkeydict:[0,2],agentkeystr:2,agentoscmd:1,agentosfilebinarydatabase64strcr:1,agentosfilebinarydatabytescr:1,agentosfiletextdatastrcr:1,algorithm:1,algorythm:[1,2],alia:[1,2],aliasdefdict:[1,2],all:[0,1,2],allow:[0,2],ani:1,append:[1,2],appli:[1,2],applic:[1,2],archiv:2,arg:[1,2],argdict:[1,2],arggset:[1,2],arglist:[1,2],arglogg:[1,2],argument:2,asctim:2,async:1,asynchonu:1,attent:[0,1],attribut:[1,2],authent:2,authentif:1,authtoken:2,authtokensdict:2,auto:1,autoclean:[1,2],automat:[1,2],avail:2,b4ff:0,backward:1,base64:1,base:1,basic:[0,1,2],becaus:1,been:2,befor:2,beginwith:[1,2],below:[0,1],between:[0,1,2],binari:1,block:2,bool:[1,2],browser:2,build:0,busi:1,button:2,cach:2,call:[0,1],can:[1,2],cant:1,central:1,chang:2,check:[0,1,2],checkintervalsecfloat:2,checktasknam:2,cleaner:1,clear:2,client:[1,2],clientrequesthandl:2,close:2,cmd:[1,2],cmdinputbool:[0,2],code:1,collect:2,comma:1,command:[1,2],commun:1,compat:1,compex:1,complet:2,complex:1,config:0,configur:[0,2],connect:[1,2],connectioncountint:2,connectionfirstqueueitemcountint:2,consist:1,consol:2,consolid:1,contain:[1,2],content:[1,2],control:[0,1,2],controlpanel:[0,2],controlpaneldict:2,controlpanelkeyallowedlist:2,controlpanelrefreshintervalsecfloat:2,cooki:2,core:1,cp_test:0,cp_versioncheck:0,cpdict:2,cpkei:2,cpkeydict:[0,2],cpkeystr:2,creat:[0,1,2],credenti:1,crosscheck:1,current:[0,1,2],custom:1,data:2,datasetlast:2,datetim:[0,2],decentr:1,def:[0,1,2],defaliastest:[1,2],defnamestr:2,defsettingsupdatepathlist:2,del:0,deprec:2,depthbit:2,descript:[2,5],desktop:[0,1,2],detail:1,detect:2,dev:1,develop:1,dict:2,dictionari:[1,2],differ:1,disconnect:[1,2],domain:2,domainadstr:2,domainupperstr:1,dont:[1,2],drive:[1,2],dsd:[1,2],dublic:1,dump:2,dumploglist:2,dumploglistcountint:2,dumploglisthashstr:2,dumploglistrefreshintervalsecfloat:2,durat:2,els:[0,2],empti:2,encod:1,end:1,env:2,equal:[1,2],equalcas:[1,2],everi:[1,2],exampl:[0,2],except:0,exe:2,execut:[1,2,4],executebool:2,exist:[1,2],expir:1,fals:[1,2],featur:[1,2],field:[1,2],file:[1,2],filehandl:2,filemanag:2,filemod:2,fileurl:2,fileurlfilepathdict:2,fileurlfilepathdict_help:2,fill:[1,2],find:1,flag:2,flagaccess:2,flagaccessdefrequestglobalauthent:2,flagcredentialsask:2,flagdonotexpir:2,flagforc:2,flagsessionisact:2,flaguseallmonitor:2,flexibl:1,folder:[0,1],forc:2,forget:2,formatt:2,from:[0,1,2],full:2,fullscreen:2,fullscreenbool:2,fullscreenrdpsessionkeystr:2,functional:0,gener:[1,2],get:[1,2],getlogg:2,git:2,give:[1,2],given:1,goe:1,good:1,gset:[0,1,5],gsettingsautoclean:1,gsettingskeylistvalueappend:1,gsettingskeylistvalueget:1,gsettingskeylistvalueoperatorplu:1,gsettingskeylistvalueset:1,gsettingstempl:1,gui:1,guid:2,gurbag:2,handl:2,handler:2,hard:2,has:1,height:2,hex:2,hierarchi:1,host:[1,2],hostnameupperstr:2,how:5,html:1,htmlrenderdef:2,http:[1,2],human:1,ignor:[1,2],ignorebool:2,imaslov:0,inactivityitemdict:1,inactivitylist:1,inadisdefaultbool:[0,1],inadloginstr:[0,1],inadstr:[0,1],inaliasstr:1,inargdict:1,inarggsettingsstr:1,inarglist:1,inargloggerstr:1,inbreaktriggerprocesswoexelist:1,incloseforcebool:1,incmdstr:1,incontenttypestr:1,incpkeystr:1,indef:1,indefnamestr:1,indepthbitint:1,index:[1,2],indict:2,indomainstr:1,inencodingstr:1,infiledatabase64str:1,infiledatabyt:1,infiledatastr:1,infilepathstr:1,inflagforceclosebool:1,inflaggetabspathbool:1,info:[0,1,2],infolderpathstr:1,inform:1,ingset:[0,1],ingsettingsclientdict:2,inhashkeystr:2,inheightpxint:1,inhostfilepathstr:1,inhostnamestr:1,inhoststr:[1,2],inhtmlrenderdef:1,init:[0,1,2],initdatetim:2,injsinitgeneratordef:1,injsongeneratordef:1,inkeylist:1,inkeystr:2,inlogg:[1,2],inloginstr:[1,2],inmatchtypestr:1,inmethodstr:1,inmodestr:[0,1,2],inmodulepathstr:1,inpasswordstr:[1,2],inpathstr:1,inportint:1,inportstr:[1,2],inprocessnamewexestr:1,inprocessnamewoexelist:1,inprocessnamewoexestr:1,input:2,inrdpfilepathstr:1,inrdpsessionkeystr:[1,2],inrdptemplatedict:1,inrequest:1,inrolehierarchyalloweddict:[0,1],inrolekeylist:1,inrowcountint:2,inrunasyncbool:1,insert:0,inshareddrivelist:1,instanc:1,instopprocessnamewoexestr:1,insupertokenstr:[0,1],interact:1,interfac:1,interpret:1,interv:[1,2],intervalsecfloat:2,intimehhmmstr:1,inurllist:[0,1],inurlstr:1,inusebothmonitorbool:1,inusernamestr:1,inuserstr:1,invalu:1,inweekdaylist:1,inwidthpxint:1,islistenbool:2,item:1,iter:2,join:0,jsinitgeneratordef:2,json:[1,2],jsongeneratordef:2,keep:1,kei:1,keystr:2,kill:1,know:1,kwarg:1,last:2,left:1,len:2,levelnam:2,liast:1,lifetim:2,lifetimerequestsecfloat:2,lifetimesecfloat:2,light:1,like:1,link:[1,2],list:[1,2],listenport:2,listenport_:2,listenurllist:2,listread:2,load:2,local:[1,2],localhost:2,log:[0,1,2],logger:[0,2],loggerdumploghandleradd:2,loggerhandlerdumploglist:2,login:[0,1,2],logoff:[1,2],logviewerbool:[0,2],look:[1,2],lookmachinescreenshot:2,lowercas:2,lpyopenrpasourcefolderpathstr:0,lresult:2,lresultdict:2,luacclientdict:0,machin:[0,2],machina:2,main:[0,1,2],makedir:2,mani:1,matchtyp:2,max:2,mechan:1,mega:1,messag:2,method:2,methodmatchurl:2,methodmatchurlbeforelist:2,mhandlerdumploglist:2,mmstr:2,modul:[0,1,2],more:1,mrobotlogg:2,mrobotloggerfh:2,mrobotloggerformatt:2,must:2,name:[0,1,2],need:[1,2],never:1,none:[1,2],notepad:2,nothingbool:2,now:2,object:[1,2],octet:1,off:2,old:[0,2],one:[0,2],onli:[1,2],openrpa52zzz:0,openrpa:2,openrparobotdaemon:2,oper:[0,1],option:[1,2],orc:2,orchestr:[0,2,5],orchestratorrestart:1,orchestratorsessionsav:1,orchestratorstart:2,order:1,oscmd:1,oscredentialsverifi:1,osfilebinarydatabase64strcr:1,osfiletextdatastrcr:1,output:2,overwrit:2,own:1,packag:[0,3],page:[1,2],pai:[0,1],panel:[0,1,2],paramet:[1,2],pass:2,password:2,path:[0,1,2],pdb:2,per:0,period:2,phone:1,pipupgrad:2,pixel:2,plu:1,port:2,post:[1,2],print:0,process:[1,2,4],processisstart:1,processlistget:1,processnam:1,processor:2,processoractivityitemappend:1,processoractivityitemcr:1,processoraliasdefcr:1,processoraliasdefupd:1,processordict:2,processstart:[1,2],processstartifturnedoff:2,processstop:[1,2],program:2,project:1,protocol:1,psutil:0,pull:2,pyopenrpa:[0,2,4],pyopenrpadict:[0,2],pyrobot_cp:0,python:[1,2,3],pythonstart:1,queue:[1,2],queuelist:2,r01:2,r01_integrationorderout:2,r01_orchestratortorobot:2,rdp:[1,2],rdpactiv:2,rdpconfigurationdict:2,rdpkeydict:[0,2],rdpkeystr:2,rdplist:[1,2],rdpsession:1,rdpsessioncmdrun:1,rdpsessionconnect:[1,2],rdpsessiondisconnect:[1,2],rdpsessiondublicatesresolv:1,rdpsessionfilereciev:2,rdpsessionfilesend:2,rdpsessionfilestoredreciev:1,rdpsessionfilestoredsend:1,rdpsessionkei:2,rdpsessionkeystr:2,rdpsessionlogoff:[1,2],rdpsessionmonitorstop:1,rdpsessionprocessstart:2,rdpsessionprocessstartifnotrun:1,rdpsessionprocessstop:1,rdpsessionreconnect:[1,2],rdpsessionresponsibilitycheck:1,rdptemplatecr:1,read:2,receiv:1,reciev:2,reconnect:1,reconnectbool:2,reestr_otgruzok:2,refresh:2,refreshsecond:2,rel:[0,1,2],rememb:2,remot:2,renderfunct:2,renderrobotr01:2,report:2,reqir:1,request:[1,2],requesttimeoutsecfloat:2,resolut:2,respons:[1,2],responsecontenttyp:2,responsedefrequestglob:2,responsefilepath:2,responsefolderpath:2,responsibilitycheckintervalsec:2,restart:[1,2],restartorchestr:2,restartorchestratorbool:[0,2],restartorchestratorgitpullbool:[0,2],restartpcbool:[0,2],result:[1,2],returnbool:2,robot:[0,1,2,5],robot_r01:2,robot_r01_help:2,robotlist:2,robotrdpact:[1,2],rolehierarchyalloweddict:2,root:2,row:2,rpa:2,ruledomainuserdict:2,rulemethodmatchurlbeforelist:2,run:[0,1,2],sad:1,safe:1,save:1,schedul:1,scheduleractivitytimeaddweekli:1,schedulerdict:2,scopesrcul:2,screen:2,screenshot:2,screenshotviewerbool:[0,2],script:1,search:1,sec:2,second:2,see:[0,2],send:[1,2],sequenc:1,server:[1,2],serverdict:2,serverset:2,sesion:2,session:[1,2],sessionguidstr:2,sessionhex:2,sessionisignoredbool:2,sessioniswindowexistbool:2,sessioniswindowresponsiblebool:2,set:[0,2],set_trac:2,setformatt:2,setlevel:2,settingstempl:[0,1],settingsupd:0,setup:2,sever:1,share:1,shareddrivelist:2,shell:1,should:2,show:2,side:2,singl:1,singleton:1,socket:1,some:[1,2],sourc:[0,1],space:1,special:2,standart:2,start:[1,2,5],stdout:[0,2],stop:1,storag:2,store:2,str:[1,2],stream:1,streamhandl:2,strftime:2,string:1,struct:2,structur:[1,2],studio:[1,4,5],success:1,successfulli:1,supertoken:[0,1],superus:0,supetoken:1,support:[0,1],symbol:1,sync:1,sys:[0,2],tablet:1,task:1,technic:[1,2],technicalsessionguidcach:2,templat:[0,1,5],test2:2,test:[0,1,2],testcontrolpanelkei:2,testrdp:2,text:1,than:1,thi:2,thread:[1,2],threadidint:2,time:[1,2],timehh:2,todo:1,token:1,tokendatetim:2,too:2,tool:1,track:1,transmiss:1,transmit:1,trigger:2,ttt:[1,2],turn:2,turpl:1,type:[0,1,2],uac:1,uackeylistcheck:1,uacsupertokenupd:[0,1],uacupd:[0,1],univers:1,updat:[1,2],upper:2,url:[1,2],url_:2,urllist:2,use:[1,2],used:1,user:[0,1,2],useradstr:2,usernam:[1,2],usernameupperstr:1,userupperstr:2,using:1,utf:1,util:2,valu:1,verifi:1,version:0,versioncheck:0,versionstr:2,viewer:2,virtual:2,wai:[0,1],want:[1,2],warn:0,web:[1,2],webcpupd:1,weburlconnectdef:1,weburlconnectfil:1,weburlconnectfold:1,webuserinfoget:1,webuserissupertoken:1,webuseruachierarchyget:1,weekdai:2,weekdaylist:2,weekli:1,when:[0,1,2],where:1,which:[1,2],who:2,why:1,width:2,window:[1,2],without:[1,2],work:2,workingdirectorypathstr:2,write:1,xlsx:2,you:[1,2]},titles:["How to start","Description","gSettings Template","Description","Description","Welcome to pyOpenRPA\u2019s documentation!"],titleterms:{architectur:1,compon:1,concept:1,configur:1,descript:[1,3,4],dict:1,document:5,global:1,gset:2,how:[0,1],orchestr:1,processor:1,pyopenrpa:[1,3,5],robot:3,set:1,start:0,templat:2,welcom:5}})
\ No newline at end of file
+Search.setIndex({docnames:["Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToStart","Robot/Robot","Studio/Studio","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToStart.rst","Robot\\Robot.rst","Studio\\Studio.rst","index.rst"],objects:{"pyOpenRPA.Orchestrator":{__Orchestrator__:[1,0,0,"-"]},"pyOpenRPA.Orchestrator.__Orchestrator__":{AgentActivityItemAdd:[1,1,1,""],AgentOSCMD:[1,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[1,1,1,""],AgentOSFileBinaryDataBytesCreate:[1,1,1,""],AgentOSFileTextDataStrCreate:[1,1,1,""],GSettingsAutocleaner:[1,1,1,""],GSettingsKeyListValueAppend:[1,1,1,""],GSettingsKeyListValueGet:[1,1,1,""],GSettingsKeyListValueOperatorPlus:[1,1,1,""],GSettingsKeyListValueSet:[1,1,1,""],OSCMD:[1,1,1,""],OSCredentialsVerify:[1,1,1,""],OrchestratorRestart:[1,1,1,""],OrchestratorSessionSave:[1,1,1,""],ProcessIsStarted:[1,1,1,""],ProcessListGet:[1,1,1,""],ProcessStart:[1,1,1,""],ProcessStop:[1,1,1,""],ProcessorActivityItemAppend:[1,1,1,""],ProcessorActivityItemCreate:[1,1,1,""],ProcessorAliasDefCreate:[1,1,1,""],ProcessorAliasDefUpdate:[1,1,1,""],PythonStart:[1,1,1,""],RDPSessionCMDRun:[1,1,1,""],RDPSessionConnect:[1,1,1,""],RDPSessionDisconnect:[1,1,1,""],RDPSessionDublicatesResolve:[1,1,1,""],RDPSessionFileStoredRecieve:[1,1,1,""],RDPSessionFileStoredSend:[1,1,1,""],RDPSessionLogoff:[1,1,1,""],RDPSessionMonitorStop:[1,1,1,""],RDPSessionProcessStartIfNotRunning:[1,1,1,""],RDPSessionProcessStop:[1,1,1,""],RDPSessionReconnect:[1,1,1,""],RDPSessionResponsibilityCheck:[1,1,1,""],RDPTemplateCreate:[1,1,1,""],SchedulerActivityTimeAddWeekly:[1,1,1,""],UACKeyListCheck:[1,1,1,""],UACSuperTokenUpdate:[1,1,1,""],UACUpdate:[1,1,1,""],WebCPUpdate:[1,1,1,""],WebURLConnectDef:[1,1,1,""],WebURLConnectFile:[1,1,1,""],WebURLConnectFolder:[1,1,1,""],WebUserInfoGet:[1,1,1,""],WebUserIsSuperToken:[1,1,1,""],WebUserUACHierarchyGet:[1,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"0643":3,"100":2,"1050":[1,2],"120":2,"127":1,"1680":[1,2],"1680x1050":2,"1992":3,"222":[0,2],"300":2,"3389":[1,2],"3600":2,"600":2,"640x480":2,"8081":2,"\u0434\u0435\u043c\u043e\u043d\u0430":2,"\u0434\u0435\u043c\u043e\u043d\u0443":2,"\u043a":2,"\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443":2,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":2,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":2,"\u043c\u043e\u0436\u043d\u043e":2,"\u043f\u043e":2,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":2,"\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f":2,"\u043f\u043e\u0440\u0442":2,"\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435":2,"\u0441\u0435\u0440\u0432\u0435\u0440\u0430":2,"\u0441\u0435\u0442\u0435\u0432\u043e\u0435":2,"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":2,"\u0444\u0430\u0439\u043b":2,"byte":1,"case":[0,2],"default":2,"float":[0,2],"function":[1,2],"import":[0,1,2,3],"int":0,"new":[0,1,2,3],"return":[1,2],"true":[1,2,3],"try":[1,3],"var":1,Abs:2,For:3,Has:2,THE:1,The:0,USe:2,Use:3,Will:2,__agentdictitemcreate__:2,__create__:2,__main__:3,__name__:3,__orchestrator__:6,__uacclientadmincreate__:[2,3],_sessionlast_rdplist:1,a2o:1,about:[0,1,2],absolut:[1,2,3],abspath:3,access:[1,2,3],accessus:2,activ:[0,1,2],activitydict:2,activityitem:1,activitylist:2,activitylistappendprocessorqueuebool:2,activitylistexecutebool:2,activitytimelist:2,actual:1,add:[1,2,3],addhandl:2,address:2,admindict:[2,3],after:[0,2,3],agent:1,agentactivityitemadd:1,agentdict:[1,2],agentkeydict:[2,3],agentkeystr:2,agentoscmd:1,agentosfilebinarydatabase64strcr:1,agentosfilebinarydatabytescr:1,agentosfiletextdatastrcr:1,algorithm:0,algorythm:[0,2],alia:[0,1,2],aliasdefdict:[0,1,2],all:[0,1,2,3],allow:[2,3],ani:[0,1],anoth:1,append:[0,1,2],appli:[0,2],applic:[0,1,2],architectur:6,archiv:2,arg:[0,1,2],argdict:[0,1,2],arggset:[0,1,2],arglist:[0,1,2],arglogg:[0,1,2],argument:[1,2],argvaluestr:1,asctim:2,associ:1,async:0,asynchonu:0,attent:[0,1,3],attribut:[0,2],authent:2,authentif:1,authtoken:2,authtokensdict:2,auto:1,autoclean:[0,2],automat:[0,2],avail:2,b4ff:3,backward:1,base64:1,base:[0,1],basic:[0,2,3],becaus:[0,1],been:2,befor:2,beginwith:[1,2],below:[0,3],between:[0,1,2,3],binari:1,block:2,bool:[0,1,2],browser:2,build:3,busi:0,button:2,cach:2,call:[0,1,3],can:[0,1,2],cant:0,central:0,chang:2,check:[1,2,3],checkintervalsecfloat:2,checktasknam:2,cleaner:1,clear:2,client:[1,2],clientrequesthandl:2,clipboard:1,close:2,cmd:[1,2],cmdinputbool:[2,3],code:0,collect:2,comma:0,command:[1,2],commun:1,compat:1,compex:0,complet:2,complex:0,compon:6,concept:6,config:3,configur:[2,3,6],connect:[1,2],connectioncountint:2,connectionfirstqueueitemcountint:2,consist:0,consol:2,consolid:0,contain:[1,2],content:[1,2],control:[0,1,2,3],controlpanel:[2,3],controlpaneldict:2,controlpanelkeyallowedlist:2,controlpanelrefreshintervalsecfloat:2,cooki:2,core:0,cp_test:3,cp_versioncheck:3,cpdict:2,cpkei:2,cpkeydict:[2,3],cpkeystr:2,creat:[0,1,2,3],credenti:1,crosscheck:1,current:[0,1,2,3],custom:0,data:2,datasetlast:2,datetim:[2,3],decentr:0,def:[0,2,3,6],defaliastest:[0,2],defnamestr:2,defsettingsupdatepathlist:2,del:3,deprec:2,depthbit:2,descript:[2,6],desktop:[0,2,3],detail:0,detect:2,dev:1,develop:1,dict:[1,2,6],dictionari:[0,2],differ:0,disconnect:[1,2],domain:2,domainadstr:2,domainupperstr:1,dont:[1,2],drive:[1,2],dsd:[0,2],dublic:1,dump:2,dumploglist:2,dumploglistcountint:2,dumploglisthashstr:2,dumploglistrefreshintervalsecfloat:2,durat:2,els:[2,3],empti:2,encod:1,end:0,env:2,environ:1,equal:[1,2],equalcas:[1,2],everi:[1,2],exampl:[0,1,2,3],except:3,exe:2,execut:[0,1,2,5],executebool:2,exist:[1,2],expir:1,fals:[1,2],featur:[0,2],field:[1,2],file:[1,2],filehandl:2,filemanag:2,filemod:2,fileurl:2,fileurlfilepathdict:2,fileurlfilepathdict_help:2,fill:[1,2],find:0,flag:[1,2],flagaccess:2,flagaccessdefrequestglobalauthent:2,flagcredentialsask:2,flagdonotexpir:2,flagforc:2,flagsessionisact:2,flaguseallmonitor:2,flexibl:0,folder:[1,3],forc:2,forget:2,formatt:2,from:[0,1,2,3],full:2,fullscreen:2,fullscreenbool:2,fullscreenrdpsessionkeystr:2,functional:3,gener:[1,2],get:[1,2],getlogg:2,git:[1,2],give:[1,2],given:1,global:[1,6],goe:0,good:0,gset:[0,1,3,6],gsettingsautoclean:1,gsettingskeylistvalueappend:1,gsettingskeylistvalueget:1,gsettingskeylistvalueoperatorplu:1,gsettingskeylistvalueset:1,gui:0,guid:2,gurbag:2,handl:2,handler:2,hard:2,has:[0,1],height:2,help:1,hex:2,hierarchi:1,host:[1,2],hostnameupperstr:2,how:6,html:1,htmlrenderdef:2,http:[0,1,2],human:1,ignor:[1,2],ignorebool:2,imaslov:3,inactivityitemdict:1,inactivitylist:1,inadisdefaultbool:[1,3],inadloginstr:[1,3],inadstr:[1,3],inaliasstr:1,inarg1str:1,inargdict:1,inarggset:1,inarggsettingsstr:1,inarglist:1,inargloggerstr:1,inbreaktriggerprocesswoexelist:1,incloseforcebool:1,incmdstr:1,incontenttypestr:1,incpkeystr:1,indef:1,indefnamestr:1,indepthbitint:1,index:[0,1,2],indict:2,indomainstr:1,inencodingstr:1,infiledatabase64str:1,infiledatabyt:1,infiledatastr:1,infilepathstr:1,inflagforceclosebool:1,inflaggetabspathbool:1,info:[1,2,3],infolderpathstr:1,inform:0,ingset:[0,1,3],ingsettingsclientdict:2,inhashkeystr:2,inheightpxint:1,inhostfilepathstr:1,inhostnamestr:1,inhoststr:[1,2],inhtmlrenderdef:1,init:[0,1,2,3],initdatetim:2,injsinitgeneratordef:1,injsongeneratordef:1,inkeylist:1,inkeystr:2,inlogg:[1,2],inloginstr:[1,2],inmatchtypestr:1,inmethodstr:1,inmodestr:[0,1,2,3],inmodulepathstr:1,inpasswordstr:[1,2],inpathstr:1,inportint:1,inportstr:[1,2],inprocessnamewexestr:1,inprocessnamewoexelist:1,inprocessnamewoexestr:1,input:2,inrdpfilepathstr:1,inrdpsessionkeystr:[1,2],inrdptemplatedict:1,inrequest:1,inrolehierarchyalloweddict:[1,3],inrolekeylist:1,inrowcountint:2,inrunasyncbool:1,insert:3,inshareddrivelist:1,instanc:0,instopprocessnamewoexestr:1,insupertokenstr:[1,3],interact:0,interfac:0,interpret:0,interv:[1,2],intervalsecfloat:2,intimehhmmstr:1,inurllist:[1,3],inurlstr:1,inusebothmonitorbool:1,inusernamestr:1,inuserstr:1,invalu:1,inweekdaylist:1,inwidthpxint:1,islistenbool:2,isresponsiblebool:1,item:[0,1],iter:2,join:3,jsinitgeneratordef:2,json:[0,1,2],jsongeneratordef:2,keep:0,kei:1,keystr:2,kill:1,know:0,kwarg:0,lactivityitem:1,laliasstr:1,last:2,left:0,len:2,levelnam:2,lifetim:2,lifetimerequestsecfloat:2,lifetimesecfloat:2,light:0,like:0,link:[0,1,2],list:[0,1,2],listen:1,listenport:2,listenport_:2,listenurllist:2,listread:2,load:2,local:[1,2],localhost:2,log:[1,2,3],logger:[2,3],loggerdumploghandleradd:2,loggerhandlerdumploglist:2,login:[1,2,3],logoff:[1,2],logviewerbool:[2,3],look:[0,1,2],lookmachinescreenshot:2,lowercas:2,lpyopenrpasourcefolderpathstr:3,lresult:2,lresultdict:2,luacclientdict:3,machin:[2,3],machina:2,main:[0,2,3],makedir:2,mani:0,matchtyp:2,max:2,mechan:0,mega:0,merg:1,messag:2,method:2,methodmatchurl:2,methodmatchurlbeforelist:2,mhandlerdumploglist:2,mmstr:2,modul:[0,1,2,3],more:0,mrobotlogg:2,mrobotloggerfh:2,mrobotloggerformatt:2,must:2,name:[0,1,2,3],need:[0,1,2],nest:1,never:1,newkeydict:1,newkeylist:1,newvalu:1,none:[0,1,2],notepad:2,nothingbool:2,now:[1,2],object:[0,1,2],occupi:1,octet:1,off:2,old:[1,2,3],one:[2,3],onli:[1,2],openrpa52zzz:3,openrpa:2,openrparobotdaemon:2,oper:[1,3],option:[1,2],orc:2,orchestr:[2,3,6],orchestratorrestart:1,orchestratorsessionsav:1,orchestratorstart:2,order:0,oscmd:1,oscredentialsverifi:1,osfilebinarydatabase64strcr:1,osfiletextdatastrcr:1,out:1,output:2,outstr:1,overwrit:2,own:0,packag:[3,4],page:[1,2],pai:[0,3],panel:[1,2,3],paramet:[0,1,2],pass:[1,2],password:2,path:[1,2,3],pdb:2,per:3,period:2,phone:0,pipupgrad:2,pixel:2,plu:1,port:2,post:[1,2],previou:1,print:3,process:[0,1,2,5],processisstart:1,processlistget:1,processnam:1,processor:[1,2,6],processoractivityitemappend:1,processoractivityitemcr:1,processoraliasdefcr:1,processoraliasdefupd:1,processordict:2,processstart:[1,2],processstartifturnedoff:2,processstop:[1,2],program:2,project:0,protocol:0,psutil:3,pull:2,pyopenrpa:[0,2,3,5],pyopenrpadict:[2,3],pyrobot_cp:3,python:[0,1,2,4],pythonstart:1,queue:[0,2],queuelist:2,r01:2,r01_integrationorderout:2,r01_orchestratortorobot:2,rdp:[0,1,2],rdpactiv:2,rdpconfigurationdict:2,rdpkeydict:[2,3],rdpkeystr:2,rdplist:[1,2],rdpsession:1,rdpsessioncmdrun:1,rdpsessionconnect:[1,2],rdpsessiondisconnect:[1,2],rdpsessiondublicatesresolv:1,rdpsessionfilereciev:2,rdpsessionfilesend:2,rdpsessionfilestoredreciev:1,rdpsessionfilestoredsend:1,rdpsessionkei:2,rdpsessionkeystr:2,rdpsessionlogoff:[1,2],rdpsessionmonitorstop:1,rdpsessionprocessstart:2,rdpsessionprocessstartifnotrun:1,rdpsessionprocessstop:1,rdpsessionreconnect:[1,2],rdpsessionresponsibilitycheck:1,rdptemplatecr:1,read:2,receiv:1,reciev:2,reconnect:1,reconnectbool:2,reestr_otgruzok:2,refer:6,refresh:2,refreshsecond:2,regener:1,rel:[1,2,3],rememb:2,remot:2,renderfunct:2,renderrobotr01:2,report:2,reqir:0,request:[1,2],requesttimeoutsecfloat:2,requir:1,resolut:2,respons:[1,2],responsecontenttyp:2,responsedefrequestglob:2,responsefilepath:2,responsefolderpath:2,responsibilitycheckintervalsec:2,restart:[1,2],restartorchestr:2,restartorchestratorbool:[2,3],restartorchestratorgitpullbool:[2,3],restartpcbool:[2,3],result:[1,2],returnbool:2,robot:[0,1,2,3,6],robot_r01:2,robot_r01_help:2,robotlist:2,robotrdpact:[1,2],rolehierarchyalloweddict:2,root:2,row:2,rpa:2,ruledomainuserdict:2,rulemethodmatchurlbeforelist:2,run:[1,2,3],sad:1,safe:1,save:1,schedul:0,scheduleractivitytimeaddweekli:1,schedulerdict:2,scopesrcul:2,screen:2,screenshot:2,screenshotviewerbool:[2,3],script:0,search:1,sec:2,second:2,see:[1,2,3],send:[1,2],sent:1,sequenc:0,server:[0,2],serverdict:2,serverset:2,sesion:2,session:[1,2],sessionguidstr:2,sessionhex:2,sessionisignoredbool:2,sessioniswindowexistbool:2,sessioniswindowresponsiblebool:2,set:[1,2,3,6],set_trac:2,setformatt:2,setlevel:2,settingstempl:[0,3],settingsupd:3,setup:2,sever:0,share:1,shareddrivelist:2,shell:1,should:2,show:2,side:[1,2],singl:0,singleton:1,socket:0,some:[0,1,2],sourc:[0,1,3],space:0,special:2,sphinx:[0,1],standart:2,start:[1,2,6],statu:1,stdout:[2,3],stop:1,storag:2,store:2,str:[0,1,2],stream:1,streamhandl:2,strftime:2,string:1,struct:2,structur:[0,2],studio:[0,5,6],success:1,successfulli:1,successufulli:1,supertoken:[1,3],superus:3,supetoken:1,support:[0,3],symbol:0,sync:0,sys:[2,3],tablet:0,task:1,technic:[0,2],technicalsessionguidcach:2,templat:[1,3,6],test2:2,test:[1,2,3],testcontrolpanelkei:2,testdef:1,testdefalia:1,testrdp:2,text:1,than:0,thi:[1,2],thread:[0,2],threadidint:2,time:[1,2],timehh:2,todo:1,token:1,tokendatetim:2,too:2,tool:0,track:1,transmiss:1,transmit:[0,1],trigger:2,ttt:[0,2],turn:2,turpl:0,type:[1,2,3],uac:1,uackeylistcheck:1,uacsupertokenupd:[1,3],uacupd:[1,3],univers:0,updat:[1,2],upper:2,url:[1,2],url_:2,urllist:2,usag:1,use:[0,1,2],used:1,user:[0,1,2,3],useradstr:2,usernam:[1,2],usernameupperstr:1,userupperstr:2,using:1,utf:1,util:2,valu:1,variant:1,verifi:1,version:3,versioncheck:3,versionstr:2,viewer:2,virtual:2,wai:[1,3],want:[0,2],warn:3,web:[0,1,2],webcpupd:1,weburlconnectdef:1,weburlconnectfil:1,weburlconnectfold:1,webuserinfoget:1,webuserissupertoken:1,webuseruachierarchyget:1,weekdai:2,weekdaylist:2,weekli:1,when:[0,1,2,3],where:1,which:[0,1,2],who:2,why:0,width:2,window:[1,2],without:[1,2],work:[1,2],workingdirectorypathstr:2,write:0,xlsx:2,you:[0,1,2]},titles:["1. Description","2. Defs","3. gSettings Template","4. How to start","Description","Description","Welcome to pyOpenRPA\u2019s documentation!"],titleterms:{__orchestrator__:1,architectur:0,compon:0,concept:0,configur:0,def:1,descript:[0,4,5],dict:0,document:6,global:0,gset:2,how:[0,3],orchestr:[0,1],processor:0,pyopenrpa:[1,4,6],refer:[0,1],robot:4,set:0,start:3,templat:2,welcom:6}})
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/01_Orchestrator.md b/Wiki/ENG_Guide/markdown/Orchestrator/01_Orchestrator.md
new file mode 100644
index 00000000..e6950bf2
--- /dev/null
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/01_Orchestrator.md
@@ -0,0 +1,82 @@
+# 1. Description
+
+pyOpenRPA Orchestrator is the executable process.
+
+The features of the orchestrator is:
+- Centralized/decentralized user control interface (applicable and for business users and for technical users). Web based, support desktop, tablet, phone.
+- Automatized robots control (customized algorithms, robots scheduling)
+- Source code mega flexibility: Light Orchestrator architecture is good for own customization
+
+## Global settings dict concept
+
+pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
+
+Because of module compexity, we use 1 init arg - inGSettings
+inGSettings is a complex dictionary which has all reqired parameters for the module execution.
+
+The description of the GSettings you can find in executable module details.
+
+## Orchestrator how to configure
+
+To init pyOpenRPA Orchestrator instance use script:
+
+from pyOpenRPA import Orchestrator # Import orchestrator main
+gSettings = SettingsTemplate.Create(inModeStr=”BASIC”) # Create GSettings with basic configuration
+Orchestrator.Orchestrator(inGSettings=gSettings) # Call the orchestrator def
+
+gSettings structure
+
+## Orchestrator architecture
+
+Orchestrator has several source code components:
+- User/robot activity consolidated queue single thread (Processor)
+- User/robot activity asynchonus many threads (Processor)
+- Scheduler single thread (main)
+- RDP keep active many thread
+- Autocleaner single thread
+- GUI keep active single thread
+- HTTP web server single thread (create user socket threads)
+-
+
+Below you can find more information about all of the component.
+
+## Component Processor
+
+Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
+
+Async - Create New thread to execute the activity list
+
+
+* Activity list
+
+List of the activity item
+
+
+* Activity item
+
+Activity item is universal mechanism to execute different algorythms from any sources.
+The core feature of the Activity is to call python defs with args and kwargs.
+If you need to init do some activity you can write some python def, then create Activity item with current def.
+ATTENTION: In some cases (such as web transmition), when you can’t transmit python def as object you can use symbolic names for python defs. It is apply you to init all of you want from the web UI.
+
+?Why i cant transmit python def from the web
+Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
+
+**NOTE**: Example
+{
+
+> “Def”:”DefAliasTest”, # def link or def alias (look gSettings[“Processor”][“AliasDefDict”])
+> “ArgList”:[1,2,3], # Args list
+> “ArgDict”:{“ttt”:1,”222”:2,”dsd”:3}, # Args dictionary
+> “ArgGSettings”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+> “ArgLogger”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+
+}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
+
+## References
+
+
+
+```
+`Python-sphinx`_
+```
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/Orchestrator.md b/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
similarity index 79%
rename from Wiki/ENG_Guide/markdown/Orchestrator/Orchestrator.md
rename to Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
index 543c3039..ddc07b3d 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/Orchestrator.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
@@ -1,84 +1,26 @@
-# Description
+# 2. Defs
-pyOpenRPA Orchestrator is the executable process.
+## pyOpenRPA.Orchestrator.__Orchestrator__
-The features of the orchestrator is:
-- Centralized/decentralized user control interface (applicable and for business users and for technical users). Web based, support desktop, tablet, phone.
-- Automatized robots control (customized algorithms, robots scheduling)
-- Source code mega flexibility: Light Orchestrator architecture is good for own customization
+```
+# EXAMPLE 1
+from pyOpenRPA import Orchestrator
+Orchestrator.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
-## Global settings dict concept
-
-pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,
-
-Because of module compexity, we use 1 init arg - inGSettings
-inGSettings is a complex dictionary which has all reqired parameters for the module execution.
-
-The description of the GSettings you can find in executable module details.
-
-## Orchestrator how to configure
-
-To init pyOpenRPA Orchestrator instance use script:
-
-from pyOpenRPA import Orchestrator # Import orchestrator main
-gSettings = SettingsTemplate.Create(inModeStr=”BASIC”) # Create GSettings with basic configuration
-Orchestrator.Orchestrator(inGSettings=gSettings) # Call the orchestrator def
-
-gSettings structure
-
-gSettingsTemplate.
-
-## Orchestrator architecture
-
-Orchestrator has several source code components:
-- User/robot activity consolidated queue single thread (Processor)
-- User/robot activity asynchonus many threads (Processor)
-- Scheduler single thread (main)
-- RDP keep active many thread
-- Autocleaner single thread
-- GUI keep active single thread
-- HTTP web server single thread (create user socket threads)
--
-
-Below you can find more information about all of the component.
-
-## Component Processor
-
-Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order
-
-Async - Create New thread to execute the activity list
-
-
-* Activity list
-
-Liast of the activity item
-
-
-* Activity item
-
-Activity item is universal mechanism to execute different algorythms from any sources.
-The core feature of the Activity is to call python defs with args and kwargs.
-If you need to init do some activity you can write some python def, then create Activity item with current def.
-ATTENTION: In some cases (such as web transmition), when you can’t transmit python def as object you can use symbolic names for python defs. It is apply you to init all of you want from the web UI.
-
-?Why i cant transmit python def from the web
-Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all.
-{
-
-> “Def”:”DefAliasTest”, # def link or def alias (look gSettings[“Processor”][“AliasDefDict”])
-> “ArgList”:[1,2,3], # Args list
-> “ArgDict”:{“ttt”:1,”222”:2,”dsd”:3}, # Args dictionary
-> “ArgGSettings”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-> “ArgLogger”: None # Name of GSettings attribute: str (ArgDict) or index (for ArgList)
-
-}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..
-
-## pyOpenRPA Orchestrator
+# EXAMPLE 2
+from pyOpenRPA.Orchestrator import __Orchestrator__
+__Orchestrator__.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
+```
### pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd(inGSettings, inHostNameStr, inUserStr, inActivityItemDict)
Add activity in AgentDict. Check if item is created
+```
+# USAGE
+import this
+```
+
* **Parameters**
@@ -223,6 +165,24 @@ Interval gsettings auto cleaner
### pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend(inGSettings, inValue, inKeyList=None)
Append value in GSettings by the key list
+```
+# USAGE
+from pyOpenRPA import Orchestrator
+
+Orchestrator.GSettingsKeyListValueAppend(
+ inGSettings = gSettings,
+ inValue = "NewValue",
+ inKeyList=["NewKeyDict","NewKeyList"]):
+# result inGSettings: {
+# ... another keys in gSettings ...,
+# "NewKeyDict":{
+# "NewKeyList":[
+# "NewValue"
+# ]
+# }
+#}
+```
+
* **Parameters**
@@ -230,10 +190,10 @@ Append value in GSettings by the key list
* **inGSettings** – Global settings dict (singleton)
- * **inValue** –
+ * **inValue** – Any value to be appended in gSettings Dict by the key list
- * **inKeyList** –
+ * **inKeyList** – List of the nested keys (see example)
@@ -264,7 +224,28 @@ Get the value from the GSettings by the key list
### pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus(inGSettings, inValue, inKeyList=None)
-Operator plus value in GSettings by the key list
+Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList)
+
+```
+# USAGE
+from pyOpenRPA import Orchestrator
+
+Orchestrator.GSettingsKeyListValueOperatorPlus(
+ inGSettings = gSettings,
+ inValue = [1,2,3],
+ inKeyList=["NewKeyDict","NewKeyList"]):
+# result inGSettings: {
+# ... another keys in gSettings ...,
+# "NewKeyDict":{
+# "NewKeyList":[
+# "NewValue",
+# 1,
+# 2,
+# 3
+# ]
+# }
+#}
+```
* **Parameters**
@@ -273,10 +254,10 @@ Operator plus value in GSettings by the key list
* **inGSettings** – Global settings dict (singleton)
- * **inValue** –
+ * **inValue** – List with values to be merged with list in gSettings
- * **inKeyList** –
+ * **inKeyList** – List of the nested keys (see example)
@@ -481,23 +462,68 @@ Add Activity item in Processor list
### pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None)
Create ActivityItem
+```
+# USAGE
+from pyOpenRPA import Orchestrator
+
+# EXAMPLE 1
+def TestDef(inArg1Str, inGSettings, inLogger):
+ pass
+lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+ inDef = TestDef,
+ inArgList=[],
+ inArgDict={"inArg1Str": "ArgValueStr"},
+ inArgGSettingsStr = "inGSettings",
+ inArgLoggerStr = "inLogger")
+# lActivityItem:
+# {
+# "Def":TestDef,
+# "ArgList":inArgList,
+# "ArgDict":inArgDict,
+# "ArgGSettings": "inArgGSettings",
+# "ArgLogger": "inLogger"
+# }
+
+# EXAMPLE 2
+def TestDef(inArg1Str):
+ pass
+Orchestrator.ProcessorAliasDefUpdate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+lActivityItem = Orchestrator.ProcessorActivityItemCreate(
+ inDef = "TestDefAlias",
+ inArgList=[],
+ inArgDict={"inArg1Str": "ArgValueStr"},
+ inArgGSettingsStr = None,
+ inArgLoggerStr = None)
+# lActivityItem:
+# {
+# "Def":"TestDefAlias",
+# "ArgList":inArgList,
+# "ArgDict":inArgDict,
+# "ArgGSettings": None,
+# "ArgLogger": None
+# }
+```
+
* **Parameters**
- * **inDef** –
+ * **inDef** – def link or def alias (look gSettings[“Processor”][“AliasDefDict”])
- * **inArgList** –
+ * **inArgList** – Args list for the Def
- * **inArgDict** –
+ * **inArgDict** – Args dict for the def
- * **inArgGSettingsStr** –
+ * **inArgGSettingsStr** – Name of def argument of the GSettings dict
- * **inArgLoggerStr** –
+ * **inArgLoggerStr** – Name of def argument of the logging object
@@ -509,6 +535,20 @@ Create ActivityItem
### pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate(inGSettings, inDef, inAliasStr=None)
Create alias for def (can be used in ActivityItem in field Def)
+!WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can’t transmit Python def object out of the Python environment)
+
+```
+# USAGE
+from pyOpenRPA import Orchestrator
+
+def TestDef():
+ pass
+lAliasStr = Orchestrator.ProcessorAliasDefCreate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+# Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr)
+```
* **Parameters**
@@ -517,21 +557,35 @@ Create alias for def (can be used in ActivityItem in field Def)
* **inGSettings** – Global settings dict (singleton)
- * **inDef** –
+ * **inDef** – Def
- * **inAliasStr** –
+ * **inAliasStr** – String alias for associated def
* **Returns**
- str Alias
+ str Alias string (Alias can be regenerated if previous alias was occupied)
### pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate(inGSettings, inDef, inAliasStr)
-Update alias for def (can be used in ActivityItem in field Def)
+Update alias for def (can be used in ActivityItem in field Def).
+!WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can’t transmit Python def object out of the Python environment)
+
+```
+# USAGE
+from pyOpenRPA import Orchestrator
+
+def TestDef():
+ pass
+Orchestrator.ProcessorAliasDefUpdate(
+ inGSettings = gSettings,
+ inDef = TestDef,
+ inAliasStr="TestDefAlias")
+# Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias")
+```
* **Parameters**
@@ -540,16 +594,16 @@ Update alias for def (can be used in ActivityItem in field Def)
* **inGSettings** – Global settings dict (singleton)
- * **inDef** –
+ * **inDef** – Def
- * **inAliasStr** –
+ * **inAliasStr** – String alias for associated def
* **Returns**
- str Alias
+ str Alias string
@@ -597,13 +651,24 @@ Send command in RDP session
* **inCMDStr** –
- * **inModeStr** –
+ * **inModeStr** – Variants:
+ “LISTEN” - Get result of the cmd command in result;
+ “CROSSCHECK” - Check if the command was successufully sent
+ “RUN” - Run without crosscheck and get clipboard
* **Returns**
- True - CMD was executed successfully
+ # OLD > True - CMD was executed successfully
+
+ {
+
+ “OutStr”: <> # Result string
+ “IsResponsibleBool”: True|False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK
+
+ }
+
@@ -1161,3 +1226,12 @@ Return User UAC Hierarchy DICT Return {…}
* **Returns**
UAC Dict {}
+
+
+## References
+
+
+
+```
+`Python-sphinx`_
+```
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/gSettingsTemplate.md b/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
similarity index 99%
rename from Wiki/ENG_Guide/markdown/Orchestrator/gSettingsTemplate.md
rename to Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
index 3811ef46..ea0bd044 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/gSettingsTemplate.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
@@ -1,4 +1,4 @@
-# gSettings Template
+# 3. gSettings Template
gSettings structure
@@ -11,7 +11,7 @@ def __Create__():
"VersionStr": None, # Will be filled in orchestrator,
"Autocleaner": {
# Some gurbage is collecting in g settings. So you can configure autocleaner to periodically clear gSettings
- "IntervalSecFloat": 600.0, # Sec float to periodically clear gsettings
+ "IntervalSecFloat": 3600.0, # Sec float to periodically clear gsettings
},
"Client": { # Settings about client web orchestrator
"Session": {
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/HowToStart.md b/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToStart.md
similarity index 99%
rename from Wiki/ENG_Guide/markdown/Orchestrator/HowToStart.md
rename to Wiki/ENG_Guide/markdown/Orchestrator/04_HowToStart.md
index 1f101700..f258c7ed 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/HowToStart.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToStart.md
@@ -1,4 +1,4 @@
-# How to start
+# 4. How to start
Start configuration example
diff --git a/Wiki/ENG_Guide/markdown/index.md b/Wiki/ENG_Guide/markdown/index.md
index c5b871e4..7373ecca 100644
--- a/Wiki/ENG_Guide/markdown/index.md
+++ b/Wiki/ENG_Guide/markdown/index.md
@@ -8,15 +8,42 @@ contain the root `toctree` directive. -->
* Description
+ * pyOpenRPA Robot
+
+
* Description
-* How to start
+* 1. Description
-* Description
+ * Global settings dict concept
+
+
+ * Orchestrator how to configure
+
+
+ * Orchestrator architecture
+
+
+ * Component Processor
+
+
+ * References
+
+
+* 2. Defs
+
+
+ * pyOpenRPA.Orchestrator.__Orchestrator__
+
+
+ * References
+
+
+* 3. gSettings Template
-* gSettings Template
+* 4. How to start