Update Sphinx - look Wiki/ENG_Guide/HTML/index.html

dev-linux
Ivan Maslov 4 years ago
parent a204580543
commit 90db529391

@ -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:
.. 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

@ -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

@ -1,6 +1,6 @@
.. _gSettingsTemplate:
************************
gSettings Template
3. gSettings Template
************************
gSettings structure

@ -1,5 +1,5 @@
************************
How to start
4. How to start
************************
Start configuration example

@ -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']

@ -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/*

@ -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=[]

@ -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

@ -0,0 +1,295 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1. Description &mdash; pyOpenRPA v1.2.0 documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="2. Defs" href="02_Defs.html" />
<link rel="prev" title="Description" href="../Studio/Studio.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> pyOpenRPA
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">ROBOT</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../Robot/Robot.html">Description</a></li>
</ul>
<p class="caption"><span class="caption-text">STUDIO</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../Studio/Studio.html">Description</a></li>
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">1. Description</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#global-settings-dict-concept">Global settings dict concept</a></li>
<li class="toctree-l2"><a class="reference internal" href="#orchestrator-how-to-configure">Orchestrator how to configure</a></li>
<li class="toctree-l2"><a class="reference internal" href="#orchestrator-architecture">Orchestrator architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="#component-processor">Component Processor</a></li>
<li class="toctree-l2"><a class="reference internal" href="#references">References</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="04_HowToStart.html">4. How to start</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">pyOpenRPA</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>1. Description</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/Orchestrator/01_Orchestrator.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="description">
<h1>1. Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h1>
<p>pyOpenRPA Orchestrator is the executable process.</p>
<p>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</p>
<div class="section" id="global-settings-dict-concept">
<h2>Global settings dict concept<a class="headerlink" href="#global-settings-dict-concept" title="Permalink to this headline"></a></h2>
<p>pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,</p>
<p>Because of module compexity, we use 1 init arg - inGSettings
inGSettings is a complex dictionary which has all reqired parameters for the module execution.</p>
<p>The description of the GSettings you can find in executable module details.</p>
</div>
<div class="section" id="orchestrator-how-to-configure">
<h2>Orchestrator how to configure<a class="headerlink" href="#orchestrator-how-to-configure" title="Permalink to this headline"></a></h2>
<p>To init pyOpenRPA Orchestrator instance use script:</p>
<p>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</p>
<p>gSettings structure</p>
</div>
<div class="section" id="orchestrator-architecture">
<h2>Orchestrator architecture<a class="headerlink" href="#orchestrator-architecture" title="Permalink to this headline"></a></h2>
<p>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)
-</p>
<p>Below you can find more information about all of the component.</p>
</div>
<div class="section" id="component-processor">
<h2>Component Processor<a class="headerlink" href="#component-processor" title="Permalink to this headline"></a></h2>
<p>Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order</p>
<p>Async - Create New thread to execute the activity list</p>
<ul class="simple">
<li><p>Activity list</p></li>
</ul>
<p>List of the activity item</p>
<ul class="simple">
<li><p>Activity item</p></li>
</ul>
<p>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 cant 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.</p>
<p>?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.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Example
{</p>
<blockquote>
<div><p>“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)</p>
</div></blockquote>
<p>}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..</p>
</div>
</div>
<div class="section" id="references">
<h2>References<a class="headerlink" href="#references" title="Permalink to this headline"></a></h2>
<p><a href="#id1"><span class="problematic" id="id2">`Python-sphinx`_</span></a></p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="02_Defs.html" class="btn btn-neutral float-right" title="2. Defs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../Studio/Studio.html" class="btn btn-neutral float-left" title="Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2020, Ivan Maslov.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Description &mdash; pyOpenRPA v1.2.0 documentation</title>
<title>2. Defs &mdash; pyOpenRPA v1.2.0 documentation</title>
@ -38,8 +38,8 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="gSettings Template" href="gSettingsTemplate.html" />
<link rel="prev" title="How to start" href="HowToStart.html" />
<link rel="next" title="3. gSettings Template" href="03_gSettingsTemplate.html" />
<link rel="prev" title="1. Description" href="01_Orchestrator.html" />
</head>
<body class="wy-body-for-nav">
@ -94,9 +94,14 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="HowToStart.html">How to start</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">2. Defs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#pyopenrpa-orchestrator-orchestrator">pyOpenRPA.Orchestrator.__Orchestrator__</a></li>
<li class="toctree-l2"><a class="reference internal" href="#references">References</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="04_HowToStart.html">4. How to start</a></li>
</ul>
@ -145,13 +150,13 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Description</li>
<li>2. Defs</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/Orchestrator/Orchestrator.rst.txt" rel="nofollow"> View page source</a>
<a href="../_sources/Orchestrator/02_Defs.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -164,75 +169,27 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="description">
<h1>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h1>
<p>pyOpenRPA Orchestrator is the executable process.</p>
<p>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</p>
<div class="section" id="global-settings-dict-concept">
<h2>Global settings dict concept<a class="headerlink" href="#global-settings-dict-concept" title="Permalink to this headline"></a></h2>
<p>pyOpenRPA project is complex tool which consist of several executable modules such as Robot, Orchestrator, Studio,</p>
<p>Because of module compexity, we use 1 init arg - inGSettings
inGSettings is a complex dictionary which has all reqired parameters for the module execution.</p>
<p>The description of the GSettings you can find in executable module details.</p>
</div>
<div class="section" id="orchestrator-how-to-configure">
<h2>Orchestrator how to configure<a class="headerlink" href="#orchestrator-how-to-configure" title="Permalink to this headline"></a></h2>
<p>To init pyOpenRPA Orchestrator instance use script:</p>
<p>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</p>
<p>gSettings structure</p>
<p><span class="xref std std-ref">gSettingsTemplate</span>.</p>
</div>
<div class="section" id="orchestrator-architecture">
<h2>Orchestrator architecture<a class="headerlink" href="#orchestrator-architecture" title="Permalink to this headline"></a></h2>
<p>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)
-</p>
<p>Below you can find more information about all of the component.</p>
</div>
<div class="section" id="component-processor">
<h2>Component Processor<a class="headerlink" href="#component-processor" title="Permalink to this headline"></a></h2>
<p>Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order</p>
<p>Async - Create New thread to execute the activity list</p>
<ul class="simple">
<li><p>Activity list</p></li>
</ul>
<p>Liast of the activity item</p>
<ul class="simple">
<li><p>Activity item</p></li>
</ul>
<p>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 cant 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.</p>
<p>?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.
{</p>
<blockquote>
<div><p>“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)</p>
</div></blockquote>
<p>}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple..</p>
<div class="section" id="defs">
<h1>2. Defs<a class="headerlink" href="#defs" title="Permalink to this headline"></a></h1>
<div class="section" id="pyopenrpa-orchestrator-orchestrator">
<h2>pyOpenRPA.Orchestrator.__Orchestrator__<a class="headerlink" href="#pyopenrpa-orchestrator-orchestrator" title="Permalink to this headline"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># EXAMPLE 1</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span> <span class="o">=</span> <span class="s2">&quot;git status&quot;</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># EXAMPLE 2</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA.Orchestrator</span> <span class="kn">import</span> <span class="n">__Orchestrator__</span>
<span class="n">__Orchestrator__</span><span class="o">.</span><span class="n">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span> <span class="o">=</span> <span class="s2">&quot;git status&quot;</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="module-pyOpenRPA.Orchestrator.__Orchestrator__">
<span id="pyopenrpa-orchestrator"></span><h2>pyOpenRPA Orchestrator<a class="headerlink" href="#module-pyOpenRPA.Orchestrator.__Orchestrator__" title="Permalink to this headline"></a></h2>
<dl class="py function">
<span class="target" id="module-pyOpenRPA.Orchestrator.__Orchestrator__"></span><dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">AgentActivityItemAdd</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span></em>, <em class="sig-param"><span class="n">inHostNameStr</span></em>, <em class="sig-param"><span class="n">inUserStr</span></em>, <em class="sig-param"><span class="n">inActivityItemDict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#AgentActivityItemAdd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd" title="Permalink to this definition"></a></dt>
<dd><p>Add activity in AgentDict. Check if item is created</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">import</span> <span class="nn">this</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
@ -343,12 +300,29 @@ Create Activity Item for the agent</p>
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">GSettingsKeyListValueAppend</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span></em>, <em class="sig-param"><span class="n">inValue</span></em>, <em class="sig-param"><span class="n">inKeyList</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#GSettingsKeyListValueAppend"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend" title="Permalink to this definition"></a></dt>
<dd><p>Append value in GSettings by the key list</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">GSettingsKeyListValueAppend</span><span class="p">(</span>
<span class="n">inGSettings</span> <span class="o">=</span> <span class="n">gSettings</span><span class="p">,</span>
<span class="n">inValue</span> <span class="o">=</span> <span class="s2">&quot;NewValue&quot;</span><span class="p">,</span>
<span class="n">inKeyList</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;NewKeyDict&quot;</span><span class="p">,</span><span class="s2">&quot;NewKeyList&quot;</span><span class="p">]):</span>
<span class="c1"># result inGSettings: {</span>
<span class="c1"># ... another keys in gSettings ...,</span>
<span class="c1"># &quot;NewKeyDict&quot;:{</span>
<span class="c1"># &quot;NewKeyList&quot;:[</span>
<span class="c1"># &quot;NewValue&quot;</span>
<span class="c1"># ]</span>
<span class="c1"># }</span>
<span class="c1">#}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inGSettings</strong> Global settings dict (singleton)</p></li>
<li><p><strong>inValue</strong> </p></li>
<li><p><strong>inKeyList</strong> </p></li>
<li><p><strong>inValue</strong> Any value to be appended in gSettings Dict by the key list</p></li>
<li><p><strong>inKeyList</strong> List of the nested keys (see example)</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
@ -377,13 +351,33 @@ Create Activity Item for the agent</p>
<dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">GSettingsKeyListValueOperatorPlus</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span></em>, <em class="sig-param"><span class="n">inValue</span></em>, <em class="sig-param"><span class="n">inKeyList</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#GSettingsKeyListValueOperatorPlus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus" title="Permalink to this definition"></a></dt>
<dd><p>Operator plus value in GSettings by the key list</p>
<dd><p>Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList)</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">GSettingsKeyListValueOperatorPlus</span><span class="p">(</span>
<span class="n">inGSettings</span> <span class="o">=</span> <span class="n">gSettings</span><span class="p">,</span>
<span class="n">inValue</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span>
<span class="n">inKeyList</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;NewKeyDict&quot;</span><span class="p">,</span><span class="s2">&quot;NewKeyList&quot;</span><span class="p">]):</span>
<span class="c1"># result inGSettings: {</span>
<span class="c1"># ... another keys in gSettings ...,</span>
<span class="c1"># &quot;NewKeyDict&quot;:{</span>
<span class="c1"># &quot;NewKeyList&quot;:[</span>
<span class="c1"># &quot;NewValue&quot;,</span>
<span class="c1"># 1,</span>
<span class="c1"># 2,</span>
<span class="c1"># 3</span>
<span class="c1"># ]</span>
<span class="c1"># }</span>
<span class="c1">#}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inGSettings</strong> Global settings dict (singleton)</p></li>
<li><p><strong>inValue</strong> </p></li>
<li><p><strong>inKeyList</strong> </p></li>
<li><p><strong>inValue</strong> List with values to be merged with list in gSettings</p></li>
<li><p><strong>inKeyList</strong> List of the nested keys (see example)</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
@ -554,14 +548,58 @@ Create Activity Item for the agent</p>
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">ProcessorActivityItemCreate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inDef</span></em>, <em class="sig-param"><span class="n">inArgList</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inArgDict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inArgGSettingsStr</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inArgLoggerStr</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#ProcessorActivityItemCreate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate" title="Permalink to this definition"></a></dt>
<dd><p>Create ActivityItem</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="c1"># EXAMPLE 1</span>
<span class="k">def</span> <span class="nf">TestDef</span><span class="p">(</span><span class="n">inArg1Str</span><span class="p">,</span> <span class="n">inGSettings</span><span class="p">,</span> <span class="n">inLogger</span><span class="p">):</span>
<span class="k">pass</span>
<span class="n">lActivityItem</span> <span class="o">=</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">ProcessorActivityItemCreate</span><span class="p">(</span>
<span class="n">inDef</span> <span class="o">=</span> <span class="n">TestDef</span><span class="p">,</span>
<span class="n">inArgList</span><span class="o">=</span><span class="p">[],</span>
<span class="n">inArgDict</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;inArg1Str&quot;</span><span class="p">:</span> <span class="s2">&quot;ArgValueStr&quot;</span><span class="p">},</span>
<span class="n">inArgGSettingsStr</span> <span class="o">=</span> <span class="s2">&quot;inGSettings&quot;</span><span class="p">,</span>
<span class="n">inArgLoggerStr</span> <span class="o">=</span> <span class="s2">&quot;inLogger&quot;</span><span class="p">)</span>
<span class="c1"># lActivityItem:</span>
<span class="c1"># {</span>
<span class="c1"># &quot;Def&quot;:TestDef,</span>
<span class="c1"># &quot;ArgList&quot;:inArgList,</span>
<span class="c1"># &quot;ArgDict&quot;:inArgDict,</span>
<span class="c1"># &quot;ArgGSettings&quot;: &quot;inArgGSettings&quot;,</span>
<span class="c1"># &quot;ArgLogger&quot;: &quot;inLogger&quot;</span>
<span class="c1"># }</span>
<span class="c1"># EXAMPLE 2</span>
<span class="k">def</span> <span class="nf">TestDef</span><span class="p">(</span><span class="n">inArg1Str</span><span class="p">):</span>
<span class="k">pass</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">ProcessorAliasDefUpdate</span><span class="p">(</span>
<span class="n">inGSettings</span> <span class="o">=</span> <span class="n">gSettings</span><span class="p">,</span>
<span class="n">inDef</span> <span class="o">=</span> <span class="n">TestDef</span><span class="p">,</span>
<span class="n">inAliasStr</span><span class="o">=</span><span class="s2">&quot;TestDefAlias&quot;</span><span class="p">)</span>
<span class="n">lActivityItem</span> <span class="o">=</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">ProcessorActivityItemCreate</span><span class="p">(</span>
<span class="n">inDef</span> <span class="o">=</span> <span class="s2">&quot;TestDefAlias&quot;</span><span class="p">,</span>
<span class="n">inArgList</span><span class="o">=</span><span class="p">[],</span>
<span class="n">inArgDict</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;inArg1Str&quot;</span><span class="p">:</span> <span class="s2">&quot;ArgValueStr&quot;</span><span class="p">},</span>
<span class="n">inArgGSettingsStr</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">inArgLoggerStr</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span>
<span class="c1"># lActivityItem:</span>
<span class="c1"># {</span>
<span class="c1"># &quot;Def&quot;:&quot;TestDefAlias&quot;,</span>
<span class="c1"># &quot;ArgList&quot;:inArgList,</span>
<span class="c1"># &quot;ArgDict&quot;:inArgDict,</span>
<span class="c1"># &quot;ArgGSettings&quot;: None,</span>
<span class="c1"># &quot;ArgLogger&quot;: None</span>
<span class="c1"># }</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inDef</strong> </p></li>
<li><p><strong>inArgList</strong> </p></li>
<li><p><strong>inArgDict</strong> </p></li>
<li><p><strong>inArgGSettingsStr</strong> </p></li>
<li><p><strong>inArgLoggerStr</strong> </p></li>
<li><p><strong>inDef</strong> def link or def alias (look gSettings[“Processor”][“AliasDefDict”])</p></li>
<li><p><strong>inArgList</strong> Args list for the Def</p></li>
<li><p><strong>inArgDict</strong> Args dict for the def</p></li>
<li><p><strong>inArgGSettingsStr</strong> Name of def argument of the GSettings dict</p></li>
<li><p><strong>inArgLoggerStr</strong> Name of def argument of the logging object</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
@ -573,17 +611,30 @@ Create Activity Item for the agent</p>
<dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">ProcessorAliasDefCreate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span></em>, <em class="sig-param"><span class="n">inDef</span></em>, <em class="sig-param"><span class="n">inAliasStr</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#ProcessorAliasDefCreate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate" title="Permalink to this definition"></a></dt>
<dd><p>Create alias for def (can be used in ActivityItem in field Def)</p>
<dd><p>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 cant transmit Python def object out of the Python environment)</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="k">def</span> <span class="nf">TestDef</span><span class="p">():</span>
<span class="k">pass</span>
<span class="n">lAliasStr</span> <span class="o">=</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">ProcessorAliasDefCreate</span><span class="p">(</span>
<span class="n">inGSettings</span> <span class="o">=</span> <span class="n">gSettings</span><span class="p">,</span>
<span class="n">inDef</span> <span class="o">=</span> <span class="n">TestDef</span><span class="p">,</span>
<span class="n">inAliasStr</span><span class="o">=</span><span class="s2">&quot;TestDefAlias&quot;</span><span class="p">)</span>
<span class="c1"># Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr)</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inGSettings</strong> Global settings dict (singleton)</p></li>
<li><p><strong>inDef</strong> </p></li>
<li><p><strong>inAliasStr</strong> </p></li>
<li><p><strong>inDef</strong> Def</p></li>
<li><p><strong>inAliasStr</strong> String alias for associated def</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>str Alias</p>
<dd class="field-even"><p>str Alias string (Alias can be regenerated if previous alias was occupied)</p>
</dd>
</dl>
</dd></dl>
@ -591,17 +642,30 @@ Create Activity Item for the agent</p>
<dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">ProcessorAliasDefUpdate</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span></em>, <em class="sig-param"><span class="n">inDef</span></em>, <em class="sig-param"><span class="n">inAliasStr</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#ProcessorAliasDefUpdate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate" title="Permalink to this definition"></a></dt>
<dd><p>Update alias for def (can be used in ActivityItem in field Def)</p>
<dd><p>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 cant transmit Python def object out of the Python environment)</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># USAGE</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span>
<span class="k">def</span> <span class="nf">TestDef</span><span class="p">():</span>
<span class="k">pass</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">ProcessorAliasDefUpdate</span><span class="p">(</span>
<span class="n">inGSettings</span> <span class="o">=</span> <span class="n">gSettings</span><span class="p">,</span>
<span class="n">inDef</span> <span class="o">=</span> <span class="n">TestDef</span><span class="p">,</span>
<span class="n">inAliasStr</span><span class="o">=</span><span class="s2">&quot;TestDefAlias&quot;</span><span class="p">)</span>
<span class="c1"># Now you can call TestDef by the alias &quot;TestDefAlias&quot; with help of ActivityItem (key Def = &quot;TestDefAlias&quot;)</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inGSettings</strong> Global settings dict (singleton)</p></li>
<li><p><strong>inDef</strong> </p></li>
<li><p><strong>inAliasStr</strong> </p></li>
<li><p><strong>inDef</strong> Def</p></li>
<li><p><strong>inAliasStr</strong> String alias for associated def</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>str Alias</p>
<dd class="field-even"><p>str Alias string</p>
</dd>
</dl>
</dd></dl>
@ -636,11 +700,23 @@ Create Activity Item for the agent</p>
<li><p><strong>inGSettings</strong> Global settings dict (singleton)</p></li>
<li><p><strong>inRDPSessionKeyStr</strong> </p></li>
<li><p><strong>inCMDStr</strong> </p></li>
<li><p><strong>inModeStr</strong> </p></li>
<li><p><strong>inModeStr</strong> 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</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>True - CMD was executed successfully</p>
<dd class="field-even"><p><dl class="simple">
<dt># OLD &gt; True - CMD was executed successfully</dt><dd><dl class="simple">
<dt>{</dt><dd><p>“OutStr”: &lt;&gt; # Result string
“IsResponsibleBool”: True|False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK</p>
</dd>
</dl>
</dd>
</dl>
<p>}</p>
</p>
</dd>
</dl>
</dd></dl>
@ -1080,6 +1156,10 @@ Var 2 (Backward compatibility): inGSettings, inRDPSessionKeyStr, inHostStr, inP
</dl>
</dd></dl>
</div>
<div class="section" id="references">
<h2>References<a class="headerlink" href="#references" title="Permalink to this headline"></a></h2>
<p><a href="#id1"><span class="problematic" id="id2">`Python-sphinx`_</span></a></p>
</div>
</div>
@ -1089,8 +1169,8 @@ Var 2 (Backward compatibility): inGSettings, inRDPSessionKeyStr, inHostStr, inP
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="gSettingsTemplate.html" class="btn btn-neutral float-right" title="gSettings Template" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="HowToStart.html" class="btn btn-neutral float-left" title="How to start" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="03_gSettingsTemplate.html" class="btn btn-neutral float-right" title="3. gSettings Template" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="01_Orchestrator.html" class="btn btn-neutral float-left" title="1. Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>gSettings Template &mdash; pyOpenRPA v1.2.0 documentation</title>
<title>3. gSettings Template &mdash; pyOpenRPA v1.2.0 documentation</title>
@ -38,7 +38,8 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="prev" title="Description" href="Orchestrator.html" />
<link rel="next" title="4. How to start" href="04_HowToStart.html" />
<link rel="prev" title="2. Defs" href="02_Defs.html" />
</head>
<body class="wy-body-for-nav">
@ -93,9 +94,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator.html">Description</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="02_Defs.html">2. Defs</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="04_HowToStart.html">4. How to start</a></li>
</ul>
@ -144,13 +146,13 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>gSettings Template</li>
<li>3. gSettings Template</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/Orchestrator/gSettingsTemplate.rst.txt" rel="nofollow"> View page source</a>
<a href="../_sources/Orchestrator/03_gSettingsTemplate.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -164,7 +166,7 @@
<div itemprop="articleBody">
<div class="section" id="gsettings-template">
<h1>gSettings Template<a class="headerlink" href="#gsettings-template" title="Permalink to this headline"></a></h1>
<h1>3. gSettings Template<a class="headerlink" href="#gsettings-template" title="Permalink to this headline"></a></h1>
<p>gSettings structure</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">logging</span><span class="o">,</span> <span class="nn">datetime</span><span class="o">,</span> <span class="nn">sys</span>
@ -174,7 +176,7 @@
<span class="s2">&quot;VersionStr&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># Will be filled in orchestrator,</span>
<span class="s2">&quot;Autocleaner&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="c1"># Some gurbage is collecting in g settings. So you can configure autocleaner to periodically clear gSettings</span>
<span class="s2">&quot;IntervalSecFloat&quot;</span><span class="p">:</span> <span class="mf">600.0</span><span class="p">,</span> <span class="c1"># Sec float to periodically clear gsettings</span>
<span class="s2">&quot;IntervalSecFloat&quot;</span><span class="p">:</span> <span class="mf">3600.0</span><span class="p">,</span> <span class="c1"># Sec float to periodically clear gsettings</span>
<span class="p">},</span>
<span class="s2">&quot;Client&quot;</span><span class="p">:</span> <span class="p">{</span> <span class="c1"># Settings about client web orchestrator</span>
<span class="s2">&quot;Session&quot;</span><span class="p">:</span> <span class="p">{</span>
@ -540,7 +542,8 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Orchestrator.html" class="btn btn-neutral float-left" title="Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="04_HowToStart.html" class="btn btn-neutral float-right" title="4. How to start" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="02_Defs.html" class="btn btn-neutral float-left" title="2. Defs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>How to start &mdash; pyOpenRPA v1.2.0 documentation</title>
<title>4. How to start &mdash; pyOpenRPA v1.2.0 documentation</title>
@ -38,8 +38,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Description" href="Orchestrator.html" />
<link rel="prev" title="Description" href="../Studio/Studio.html" />
<link rel="prev" title="3. gSettings Template" href="03_gSettingsTemplate.html" />
</head>
<body class="wy-body-for-nav">
@ -94,9 +93,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">4. How to start</a></li>
</ul>
@ -145,13 +145,13 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>How to start</li>
<li>4. How to start</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/Orchestrator/HowToStart.rst.txt" rel="nofollow"> View page source</a>
<a href="../_sources/Orchestrator/04_HowToStart.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -165,7 +165,7 @@
<div itemprop="articleBody">
<div class="section" id="how-to-start">
<h1>How to start<a class="headerlink" href="#how-to-start" title="Permalink to this headline"></a></h1>
<h1>4. How to start<a class="headerlink" href="#how-to-start" title="Permalink to this headline"></a></h1>
<p>Start configuration example</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">psutil</span><span class="o">,</span> <span class="nn">datetime</span><span class="o">,</span> <span class="nn">logging</span><span class="o">,</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span> <span class="c1"># stdout from logging</span>
@ -247,8 +247,7 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Orchestrator.html" class="btn btn-neutral float-right" title="Description" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../Studio/Studio.html" class="btn btn-neutral float-left" title="Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="03_gSettingsTemplate.html" class="btn btn-neutral float-left" title="3. gSettings Template" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

@ -86,7 +86,10 @@
<p class="caption"><span class="caption-text">ROBOT</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Description</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Description</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#module-pyOpenRPA.Robot.UIDesktop">pyOpenRPA Robot</a></li>
</ul>
</li>
</ul>
<p class="caption"><span class="caption-text">STUDIO</span></p>
<ul>
@ -94,9 +97,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>

@ -38,7 +38,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="How to start" href="../Orchestrator/HowToStart.html" />
<link rel="next" title="1. Description" href="../Orchestrator/01_Orchestrator.html" />
<link rel="prev" title="Description" href="../Robot/Robot.html" />
</head>
@ -94,9 +94,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
@ -175,7 +176,7 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../Orchestrator/HowToStart.html" class="btn btn-neutral float-right" title="How to start" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../Orchestrator/01_Orchestrator.html" class="btn btn-neutral float-right" title="1. Description" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../Robot/Robot.html" class="btn btn-neutral float-left" title="Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>

@ -92,9 +92,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>

@ -92,9 +92,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
@ -190,10 +191,15 @@
<span class="c1"># AGENT DEFS</span>
<div class="viewcode-block" id="AgentActivityItemAdd"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd">[docs]</a><span class="k">def</span> <span class="nf">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="p">):</span>
<div class="viewcode-block" id="AgentActivityItemAdd"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd">[docs]</a><span class="k">def</span> <span class="nf">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Add activity in AgentDict. Check if item is created</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> import this</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inHostNameStr: Agent host name</span>
<span class="sd"> :param inUserStr: User login, where agent is based</span>
@ -207,7 +213,7 @@
<span class="n">lThisAgentDict</span><span class="p">[</span><span class="s2">&quot;ActivityList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inActivityItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="AgentOSCMD"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSCMD">[docs]</a><span class="k">def</span> <span class="nf">AgentOSCMD</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<div class="viewcode-block" id="AgentOSCMD"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSCMD">[docs]</a><span class="k">def</span> <span class="nf">AgentOSCMD</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> pyOpenRPA.Agent: Send CMD to OS. Result return to log + Orchestrator by the A2O connection</span>
<span class="sd"> def OSCMD(inCMDStr, inRunAsyncBool=True, inGSettings=None):</span>
@ -229,7 +235,7 @@
<span class="c1">#Send item in AgentDict for the futher data transmition</span>
<span class="n">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="o">=</span><span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="o">=</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="o">=</span><span class="n">lActivityItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="AgentOSFileBinaryDataBytesCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBytesCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileBinaryDataBytesCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataBytes</span><span class="p">):</span>
<div class="viewcode-block" id="AgentOSFileBinaryDataBytesCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBytesCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileBinaryDataBytesCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataBytes</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> pyOpenRPA.Agent: Create binary file by the base64 string (safe for JSON transmition)</span>
<span class="sd"> def OSFileBinaryDataBase64StrCreate(inFilePathStr, inFileDataBase64Str,inGSettings = None):</span>
@ -254,7 +260,7 @@
<span class="n">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="o">=</span><span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="o">=</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="o">=</span><span class="n">lActivityItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="AgentOSFileBinaryDataBase64StrCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBase64StrCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileBinaryDataBase64StrCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataBase64Str</span><span class="p">):</span>
<div class="viewcode-block" id="AgentOSFileBinaryDataBase64StrCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBase64StrCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileBinaryDataBase64StrCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataBase64Str</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> pyOpenRPA.Agent: Create binary file by the base64 string (safe for JSON transmission)</span>
<span class="sd"> def OSFileBinaryDataBase64StrCreate(inFilePathStr, inFileDataBase64Str,inGSettings = None):</span>
@ -278,7 +284,7 @@
<span class="n">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="o">=</span><span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="o">=</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="o">=</span><span class="n">lActivityItemDict</span><span class="p">)</span></div>
<span class="c1"># Send text file to Agent (string)</span>
<div class="viewcode-block" id="AgentOSFileTextDataStrCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileTextDataStrCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileTextDataStrCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataStr</span><span class="p">,</span> <span class="n">inEncodingStr</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span><span class="p">):</span>
<div class="viewcode-block" id="AgentOSFileTextDataStrCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileTextDataStrCreate">[docs]</a><span class="k">def</span> <span class="nf">AgentOSFileTextDataStrCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFileDataStr</span><span class="p">,</span> <span class="n">inEncodingStr</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> pyOpenRPA.Agent: Create text file by the string</span>
<span class="sd"> def OSFileTextDataStrCreate(inFilePathStr, inFileDataStr, inEncodingStr = &quot;utf-8&quot;,inGSettings = None):</span>
@ -303,7 +309,7 @@
<span class="n">AgentActivityItemAdd</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inHostNameStr</span><span class="o">=</span><span class="n">inHostNameStr</span><span class="p">,</span> <span class="n">inUserStr</span><span class="o">=</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inActivityItemDict</span><span class="o">=</span><span class="n">lActivityItemDict</span><span class="p">)</span></div>
<span class="c1"># OS DEFS</span>
<div class="viewcode-block" id="OSCredentialsVerify"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCredentialsVerify">[docs]</a><span class="k">def</span> <span class="nf">OSCredentialsVerify</span><span class="p">(</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="p">,</span> <span class="n">inDomainStr</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="c1">##</span>
<div class="viewcode-block" id="OSCredentialsVerify"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCredentialsVerify">[docs]</a><span class="k">def</span> <span class="nf">OSCredentialsVerify</span><span class="p">(</span><span class="n">inUserStr</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="p">,</span> <span class="n">inDomainStr</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="c1">##</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Verify user credentials in windows. Return bool</span>
@ -322,7 +328,7 @@
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="OSCMD"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCMD">[docs]</a><span class="k">def</span> <span class="nf">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inLogger</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="OSCMD"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCMD">[docs]</a><span class="k">def</span> <span class="nf">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inRunAsyncBool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inLogger</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> OS send command in shell locally</span>
@ -363,7 +369,7 @@
<span class="c1">#lResultCMDRun = 1 # os.system(lCMDCode)</span>
<span class="k">return</span> <span class="n">lResultStr</span></div>
<div class="viewcode-block" id="OrchestratorRestart"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart">[docs]</a><span class="k">def</span> <span class="nf">OrchestratorRestart</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="OrchestratorRestart"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart">[docs]</a><span class="k">def</span> <span class="nf">OrchestratorRestart</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Orchestrator restart</span>
@ -377,7 +383,7 @@
<span class="n">os</span><span class="o">.</span><span class="n">execl</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">),</span> <span class="o">*</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
<div class="viewcode-block" id="OrchestratorSessionSave"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">[docs]</a><span class="k">def</span> <span class="nf">OrchestratorSessionSave</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="OrchestratorSessionSave"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">[docs]</a><span class="k">def</span> <span class="nf">OrchestratorSessionSave</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Orchestrator session save in file _SessionLast_RDPList.json (encoding = &quot;utf-8&quot;)</span>
@ -394,7 +400,7 @@
<span class="sa">f</span><span class="s2">&quot;Orchestrator has dump the RDP list before the restart.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="UACKeyListCheck"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck">[docs]</a><span class="k">def</span> <span class="nf">UACKeyListCheck</span><span class="p">(</span><span class="n">inRequest</span><span class="p">,</span> <span class="n">inRoleKeyList</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<div class="viewcode-block" id="UACKeyListCheck"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck">[docs]</a><span class="k">def</span> <span class="nf">UACKeyListCheck</span><span class="p">(</span><span class="n">inRequest</span><span class="p">,</span> <span class="n">inRoleKeyList</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check is client is has access for the key list</span>
@ -404,7 +410,7 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">inRequest</span><span class="o">.</span><span class="n">UACClientCheck</span><span class="p">(</span><span class="n">inRoleKeyList</span><span class="o">=</span><span class="n">inRoleKeyList</span><span class="p">)</span></div>
<div class="viewcode-block" id="UACUpdate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate">[docs]</a><span class="k">def</span> <span class="nf">UACUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inADLoginStr</span><span class="p">,</span> <span class="n">inADStr</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">inADIsDefaultBool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inURLList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inRoleHierarchyAllowedDict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="UACUpdate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate">[docs]</a><span class="k">def</span> <span class="nf">UACUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inADLoginStr</span><span class="p">,</span> <span class="n">inADStr</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">inADIsDefaultBool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inURLList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inRoleHierarchyAllowedDict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Update user access (UAC)</span>
@ -439,7 +445,7 @@
<span class="c1"># Case add default domain + user</span>
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ServerDict&quot;</span><span class="p">][</span><span class="s2">&quot;AccessUsers&quot;</span><span class="p">][</span><span class="s2">&quot;RuleDomainUserDict&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">update</span><span class="p">({(</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="n">inADLoginStr</span><span class="o">.</span><span class="n">upper</span><span class="p">()):</span><span class="n">lRuleDomainUserDict</span><span class="p">})</span></div>
<div class="viewcode-block" id="UACSuperTokenUpdate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate">[docs]</a><span class="k">def</span> <span class="nf">UACSuperTokenUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inSuperTokenStr</span><span class="p">):</span>
<div class="viewcode-block" id="UACSuperTokenUpdate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate">[docs]</a><span class="k">def</span> <span class="nf">UACSuperTokenUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inSuperTokenStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Add supertoken for the all access (it is need for the robot communication without human)</span>
@ -457,7 +463,7 @@
<span class="c1"># # # # # # # # # # # # # # # # # # # # # # #</span>
<div class="viewcode-block" id="WebURLConnectDef"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectDef</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inContentTypeStr</span><span class="o">=</span><span class="s2">&quot;application/octet-stream&quot;</span><span class="p">):</span>
<div class="viewcode-block" id="WebURLConnectDef"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectDef</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inContentTypeStr</span><span class="o">=</span><span class="s2">&quot;application/octet-stream&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Connect URL to DEF</span>
<span class="sd"> &quot;inMethodStr&quot;:&quot;GET|POST&quot;,</span>
@ -486,7 +492,7 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ServerDict&quot;</span><span class="p">][</span><span class="s2">&quot;URLList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lURLItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="WebURLConnectFolder"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectFolder</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inFolderPathStr</span><span class="p">):</span>
<div class="viewcode-block" id="WebURLConnectFolder"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectFolder</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inFolderPathStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Connect URL to Folder</span>
<span class="sd"> &quot;inMethodStr&quot;:&quot;GET|POST&quot;,</span>
@ -516,7 +522,7 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ServerDict&quot;</span><span class="p">][</span><span class="s2">&quot;URLList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lURLItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="WebURLConnectFile"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectFile</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inContentTypeStr</span><span class="o">=</span><span class="s2">&quot;application/octet-stream&quot;</span><span class="p">):</span>
<div class="viewcode-block" id="WebURLConnectFile"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile">[docs]</a><span class="k">def</span> <span class="nf">WebURLConnectFile</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inMethodStr</span><span class="p">,</span> <span class="n">inURLStr</span><span class="p">,</span> <span class="n">inMatchTypeStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inContentTypeStr</span><span class="o">=</span><span class="s2">&quot;application/octet-stream&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Connect URL to File</span>
<span class="sd"> &quot;inMethodStr&quot;:&quot;GET|POST&quot;,</span>
@ -542,7 +548,7 @@
<span class="p">}</span>
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ServerDict&quot;</span><span class="p">][</span><span class="s2">&quot;URLList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lURLItemDict</span><span class="p">)</span></div>
<div class="viewcode-block" id="WebCPUpdate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate">[docs]</a><span class="k">def</span> <span class="nf">WebCPUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inCPKeyStr</span><span class="p">,</span> <span class="n">inHTMLRenderDef</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inJSONGeneratorDef</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inJSInitGeneratorDef</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="WebCPUpdate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate">[docs]</a><span class="k">def</span> <span class="nf">WebCPUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inCPKeyStr</span><span class="p">,</span> <span class="n">inHTMLRenderDef</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inJSONGeneratorDef</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inJSInitGeneratorDef</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Add control panel HTML, JSON generator or JS when page init</span>
@ -565,7 +571,7 @@
<span class="k">if</span> <span class="n">inJSInitGeneratorDef</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;CPDict&quot;</span><span class="p">][</span><span class="n">inCPKeyStr</span><span class="p">][</span><span class="s2">&quot;JSInitGeneratorDef&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">inJSInitGeneratorDef</span></div>
<div class="viewcode-block" id="WebUserInfoGet"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet">[docs]</a><span class="k">def</span> <span class="nf">WebUserInfoGet</span><span class="p">(</span><span class="n">inRequest</span><span class="p">):</span>
<div class="viewcode-block" id="WebUserInfoGet"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet">[docs]</a><span class="k">def</span> <span class="nf">WebUserInfoGet</span><span class="p">(</span><span class="n">inRequest</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return User info about request</span>
@ -576,7 +582,7 @@
<span class="n">lUserUpperStr</span> <span class="o">=</span> <span class="n">inRequest</span><span class="o">.</span><span class="n">OpenRPA</span><span class="p">[</span><span class="s2">&quot;User&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
<span class="k">return</span> <span class="p">{</span><span class="s2">&quot;DomainUpperStr&quot;</span><span class="p">:</span> <span class="n">lDomainUpperStr</span><span class="p">,</span> <span class="s2">&quot;UserNameUpperStr&quot;</span><span class="p">:</span> <span class="n">lUserUpperStr</span><span class="p">}</span></div>
<div class="viewcode-block" id="WebUserIsSuperToken"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken">[docs]</a><span class="k">def</span> <span class="nf">WebUserIsSuperToken</span><span class="p">(</span><span class="n">inRequest</span><span class="p">,</span> <span class="n">inGSettings</span><span class="p">):</span>
<div class="viewcode-block" id="WebUserIsSuperToken"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken">[docs]</a><span class="k">def</span> <span class="nf">WebUserIsSuperToken</span><span class="p">(</span><span class="n">inRequest</span><span class="p">,</span> <span class="n">inGSettings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return bool if request is authentificated with supetoken (token which is never expires)</span>
@ -589,7 +595,7 @@
<span class="n">lIsSuperTokenBool</span> <span class="o">=</span> <span class="n">inGSettings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ServerDict&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;AccessUsers&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;AuthTokensDict&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">inRequest</span><span class="o">.</span><span class="n">OpenRPA</span><span class="p">[</span><span class="s2">&quot;AuthToken&quot;</span><span class="p">],</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;FlagDoNotExpire&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="k">return</span> <span class="n">lIsSuperTokenBool</span></div>
<div class="viewcode-block" id="WebUserUACHierarchyGet"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet">[docs]</a><span class="k">def</span> <span class="nf">WebUserUACHierarchyGet</span><span class="p">(</span><span class="n">inRequest</span><span class="p">):</span>
<div class="viewcode-block" id="WebUserUACHierarchyGet"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet">[docs]</a><span class="k">def</span> <span class="nf">WebUserUACHierarchyGet</span><span class="p">(</span><span class="n">inRequest</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return User UAC Hierarchy DICT Return {...}</span>
@ -599,7 +605,7 @@
<span class="k">return</span> <span class="n">inRequest</span><span class="o">.</span><span class="n">UserRoleHierarchyGet</span><span class="p">()</span></div>
<span class="c1">## GSettings defs</span>
<div class="viewcode-block" id="GSettingsKeyListValueSet"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueSet">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueSet</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="GSettingsKeyListValueSet"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueSet">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueSet</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set value in GSettings by the key list</span>
@ -620,7 +626,7 @@
<span class="n">lDict</span><span class="p">[</span><span class="n">inKeyList</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">inValue</span> <span class="c1">#Set value</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="GSettingsKeyListValueGet"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueGet">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueGet</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="GSettingsKeyListValueGet"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueGet">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueGet</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the value from the GSettings by the key list</span>
@ -639,13 +645,31 @@
<span class="n">lDict</span><span class="o">=</span><span class="n">lDict</span><span class="p">[</span><span class="n">lItem2</span><span class="p">]</span>
<span class="k">return</span> <span class="n">lDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">inKeyList</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="kc">None</span><span class="p">)</span></div>
<div class="viewcode-block" id="GSettingsKeyListValueAppend"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueAppend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="GSettingsKeyListValueAppend"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueAppend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Append value in GSettings by the key list</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> from pyOpenRPA import Orchestrator</span>
<span class="sd"> Orchestrator.GSettingsKeyListValueAppend(</span>
<span class="sd"> inGSettings = gSettings,</span>
<span class="sd"> inValue = &quot;NewValue&quot;,</span>
<span class="sd"> inKeyList=[&quot;NewKeyDict&quot;,&quot;NewKeyList&quot;]):</span>
<span class="sd"> # result inGSettings: {</span>
<span class="sd"> # ... another keys in gSettings ...,</span>
<span class="sd"> # &quot;NewKeyDict&quot;:{</span>
<span class="sd"> # &quot;NewKeyList&quot;:[</span>
<span class="sd"> # &quot;NewValue&quot;</span>
<span class="sd"> # ]</span>
<span class="sd"> # }</span>
<span class="sd"> #}</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inValue:</span>
<span class="sd"> :param inKeyList:</span>
<span class="sd"> :param inValue: Any value to be appended in gSettings Dict by the key list</span>
<span class="sd"> :param inKeyList: List of the nested keys (see example)</span>
<span class="sd"> :return: True every time</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">inKeyList</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">inKeyList</span> <span class="o">=</span> <span class="p">[]</span>
@ -660,13 +684,34 @@
<span class="n">lDict</span><span class="p">[</span><span class="n">inKeyList</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inValue</span><span class="p">)</span> <span class="c1">#Set value</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="GSettingsKeyListValueOperatorPlus"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueOperatorPlus</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="GSettingsKeyListValueOperatorPlus"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus">[docs]</a><span class="k">def</span> <span class="nf">GSettingsKeyListValueOperatorPlus</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inValue</span><span class="p">,</span> <span class="n">inKeyList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Operator plus value in GSettings by the key list</span>
<span class="sd"> Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList)</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> from pyOpenRPA import Orchestrator</span>
<span class="sd"> Orchestrator.GSettingsKeyListValueOperatorPlus(</span>
<span class="sd"> inGSettings = gSettings,</span>
<span class="sd"> inValue = [1,2,3],</span>
<span class="sd"> inKeyList=[&quot;NewKeyDict&quot;,&quot;NewKeyList&quot;]):</span>
<span class="sd"> # result inGSettings: {</span>
<span class="sd"> # ... another keys in gSettings ...,</span>
<span class="sd"> # &quot;NewKeyDict&quot;:{</span>
<span class="sd"> # &quot;NewKeyList&quot;:[</span>
<span class="sd"> # &quot;NewValue&quot;,</span>
<span class="sd"> # 1,</span>
<span class="sd"> # 2,</span>
<span class="sd"> # 3</span>
<span class="sd"> # ]</span>
<span class="sd"> # }</span>
<span class="sd"> #}</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inValue:</span>
<span class="sd"> :param inKeyList:</span>
<span class="sd"> :param inValue: List with values to be merged with list in gSettings</span>
<span class="sd"> :param inKeyList: List of the nested keys (see example)</span>
<span class="sd"> :return: True every time</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">inKeyList</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">inKeyList</span> <span class="o">=</span> <span class="p">[]</span>
@ -681,15 +726,30 @@
<span class="n">lDict</span><span class="p">[</span><span class="n">inKeyList</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">+=</span> <span class="n">inValue</span> <span class="c1">#Set value</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="ProcessorAliasDefCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorAliasDefCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inAliasStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessorAliasDefCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorAliasDefCreate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inAliasStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create alias for def (can be used in ActivityItem in field Def)</span>
<span class="sd"> !WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can&#39;t transmit Python def object out of the Python environment)</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> from pyOpenRPA import Orchestrator</span>
<span class="sd"> def TestDef():</span>
<span class="sd"> pass</span>
<span class="sd"> lAliasStr = Orchestrator.ProcessorAliasDefCreate(</span>
<span class="sd"> inGSettings = gSettings,</span>
<span class="sd"> inDef = TestDef,</span>
<span class="sd"> inAliasStr=&quot;TestDefAlias&quot;)</span>
<span class="sd"> # Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr)</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inDef:</span>
<span class="sd"> :param inAliasStr:</span>
<span class="sd"> :return: str Alias</span>
<span class="sd"> :param inDef: Def</span>
<span class="sd"> :param inAliasStr: String alias for associated def</span>
<span class="sd"> :return: str Alias string (Alias can be regenerated if previous alias was occupied)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1">#TODO Pay attention - New alias can be used too - need to create more complex algorythm to create new alias!</span>
<span class="n">lL</span> <span class="o">=</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">]</span>
<span class="k">if</span> <span class="n">inAliasStr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">inAliasStr</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">inDef</span><span class="p">)</span>
<span class="c1"># Check if key is not exists</span>
@ -699,28 +759,87 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ProcessorDict&quot;</span><span class="p">][</span><span class="s2">&quot;AliasDefDict&quot;</span><span class="p">][</span><span class="n">inAliasStr</span><span class="p">]</span> <span class="o">=</span> <span class="n">inDef</span>
<span class="k">return</span> <span class="n">inAliasStr</span></div>
<div class="viewcode-block" id="ProcessorAliasDefUpdate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorAliasDefUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inAliasStr</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessorAliasDefUpdate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorAliasDefUpdate</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inAliasStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Update alias for def (can be used in ActivityItem in field Def)</span>
<span class="sd"> Update alias for def (can be used in ActivityItem in field Def).</span>
<span class="sd"> !WHEN DEF ALIAS IS REQUIRED! - Def alias is required when you try to call Python def from the Orchestrator WEB side (because you can&#39;t transmit Python def object out of the Python environment)</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> from pyOpenRPA import Orchestrator</span>
<span class="sd"> def TestDef():</span>
<span class="sd"> pass</span>
<span class="sd"> Orchestrator.ProcessorAliasDefUpdate(</span>
<span class="sd"> inGSettings = gSettings,</span>
<span class="sd"> inDef = TestDef,</span>
<span class="sd"> inAliasStr=&quot;TestDefAlias&quot;)</span>
<span class="sd"> # Now you can call TestDef by the alias &quot;TestDefAlias&quot; with help of ActivityItem (key Def = &quot;TestDefAlias&quot;)</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inDef:</span>
<span class="sd"> :param inAliasStr:</span>
<span class="sd"> :return: str Alias</span>
<span class="sd"> :param inDef: Def</span>
<span class="sd"> :param inAliasStr: String alias for associated def</span>
<span class="sd"> :return: str Alias string</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">inDef</span><span class="p">):</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ProcessorDict&quot;</span><span class="p">][</span><span class="s2">&quot;AliasDefDict&quot;</span><span class="p">][</span><span class="n">inAliasStr</span><span class="p">]</span> <span class="o">=</span> <span class="n">inDef</span>
<span class="k">else</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;pyOpenRPA Exception: You can&#39;t use Orchestrator.ProcessorAliasDefUpdate with arg &#39;inDef&#39; string value. inDef is &#39;</span><span class="si">{</span><span class="n">inDef</span><span class="si">}</span><span class="s2">&#39;, inAliasStr is &#39;</span><span class="si">{</span><span class="n">inAliasStr</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">inAliasStr</span></div>
<div class="viewcode-block" id="ProcessorActivityItemCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorActivityItemCreate</span><span class="p">(</span><span class="n">inDef</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgGSettingsStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgLoggerStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessorActivityItemCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate">[docs]</a><span class="k">def</span> <span class="nf">ProcessorActivityItemCreate</span><span class="p">(</span><span class="n">inDef</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgGSettingsStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgLoggerStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create ActivityItem</span>
<span class="sd"> :param inDef:</span>
<span class="sd"> :param inArgList:</span>
<span class="sd"> :param inArgDict:</span>
<span class="sd"> :param inArgGSettingsStr:</span>
<span class="sd"> :param inArgLoggerStr:</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> # USAGE</span>
<span class="sd"> from pyOpenRPA import Orchestrator</span>
<span class="sd"> # EXAMPLE 1</span>
<span class="sd"> def TestDef(inArg1Str, inGSettings, inLogger):</span>
<span class="sd"> pass</span>
<span class="sd"> lActivityItem = Orchestrator.ProcessorActivityItemCreate(</span>
<span class="sd"> inDef = TestDef,</span>
<span class="sd"> inArgList=[],</span>
<span class="sd"> inArgDict={&quot;inArg1Str&quot;: &quot;ArgValueStr&quot;},</span>
<span class="sd"> inArgGSettingsStr = &quot;inGSettings&quot;,</span>
<span class="sd"> inArgLoggerStr = &quot;inLogger&quot;)</span>
<span class="sd"> # lActivityItem:</span>
<span class="sd"> # {</span>
<span class="sd"> # &quot;Def&quot;:TestDef,</span>
<span class="sd"> # &quot;ArgList&quot;:inArgList,</span>
<span class="sd"> # &quot;ArgDict&quot;:inArgDict,</span>
<span class="sd"> # &quot;ArgGSettings&quot;: &quot;inArgGSettings&quot;,</span>
<span class="sd"> # &quot;ArgLogger&quot;: &quot;inLogger&quot;</span>
<span class="sd"> # }</span>
<span class="sd"> # EXAMPLE 2</span>
<span class="sd"> def TestDef(inArg1Str):</span>
<span class="sd"> pass</span>
<span class="sd"> Orchestrator.ProcessorAliasDefUpdate(</span>
<span class="sd"> inGSettings = gSettings,</span>
<span class="sd"> inDef = TestDef,</span>
<span class="sd"> inAliasStr=&quot;TestDefAlias&quot;)</span>
<span class="sd"> lActivityItem = Orchestrator.ProcessorActivityItemCreate(</span>
<span class="sd"> inDef = &quot;TestDefAlias&quot;,</span>
<span class="sd"> inArgList=[],</span>
<span class="sd"> inArgDict={&quot;inArg1Str&quot;: &quot;ArgValueStr&quot;},</span>
<span class="sd"> inArgGSettingsStr = None,</span>
<span class="sd"> inArgLoggerStr = None)</span>
<span class="sd"> # lActivityItem:</span>
<span class="sd"> # {</span>
<span class="sd"> # &quot;Def&quot;:&quot;TestDefAlias&quot;,</span>
<span class="sd"> # &quot;ArgList&quot;:inArgList,</span>
<span class="sd"> # &quot;ArgDict&quot;:inArgDict,</span>
<span class="sd"> # &quot;ArgGSettings&quot;: None,</span>
<span class="sd"> # &quot;ArgLogger&quot;: None</span>
<span class="sd"> # }</span>
<span class="sd"> :param inDef: def link or def alias (look gSettings[&quot;Processor&quot;][&quot;AliasDefDict&quot;])</span>
<span class="sd"> :param inArgList: Args list for the Def</span>
<span class="sd"> :param inArgDict: Args dict for the def</span>
<span class="sd"> :param inArgGSettingsStr: Name of def argument of the GSettings dict</span>
<span class="sd"> :param inArgLoggerStr: Name of def argument of the logging object</span>
<span class="sd"> :return: {}</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">inArgList</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">inArgList</span><span class="o">=</span><span class="p">[]</span>
@ -734,7 +853,7 @@
<span class="p">}</span>
<span class="k">return</span> <span class="n">lActivityItemDict</span></div>
<div class="viewcode-block" id="ProcessorActivityItemAppend"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend">[docs]</a><span class="k">def</span> <span class="nf">ProcessorActivityItemAppend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgGSettingsStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgLoggerStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessorActivityItemAppend"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend">[docs]</a><span class="k">def</span> <span class="nf">ProcessorActivityItemAppend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inDef</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgGSettingsStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgLoggerStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Add Activity item in Processor list</span>
@ -759,7 +878,7 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ProcessorDict&quot;</span><span class="p">][</span><span class="s2">&quot;ActivityList&quot;</span><span class="p">]</span><span class="o">+=</span><span class="n">lActivityList</span></div>
<span class="c1">## Process defs</span>
<div class="viewcode-block" id="ProcessIsStarted"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted">[docs]</a><span class="k">def</span> <span class="nf">ProcessIsStarted</span><span class="p">(</span><span class="n">inProcessNameWOExeStr</span><span class="p">):</span> <span class="c1"># Check if process is started</span>
<div class="viewcode-block" id="ProcessIsStarted"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted">[docs]</a><span class="k">def</span> <span class="nf">ProcessIsStarted</span><span class="p">(</span><span class="n">inProcessNameWOExeStr</span><span class="p">):</span> <span class="c1"># Check if process is started</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if there is any running process that contains the given name processName.</span>
@ -776,7 +895,7 @@
<span class="k">pass</span>
<span class="k">return</span> <span class="kc">False</span></div>
<div class="viewcode-block" id="ProcessStart"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart">[docs]</a><span class="k">def</span> <span class="nf">ProcessStart</span><span class="p">(</span><span class="n">inPathStr</span><span class="p">,</span> <span class="n">inArgList</span><span class="p">,</span> <span class="n">inStopProcessNameWOExeStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessStart"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart">[docs]</a><span class="k">def</span> <span class="nf">ProcessStart</span><span class="p">(</span><span class="n">inPathStr</span><span class="p">,</span> <span class="n">inArgList</span><span class="p">,</span> <span class="n">inStopProcessNameWOExeStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Start process locally [optional: if task name is not started]</span>
@ -800,7 +919,7 @@
<span class="n">lItemArgs</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">inArgList</span><span class="p">)</span>
<span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">lItemArgs</span><span class="p">,</span><span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
<div class="viewcode-block" id="ProcessStop"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop">[docs]</a><span class="k">def</span> <span class="nf">ProcessStop</span><span class="p">(</span><span class="n">inProcessNameWOExeStr</span><span class="p">,</span> <span class="n">inCloseForceBool</span><span class="p">,</span> <span class="n">inUserNameStr</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">sername%&quot;</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessStop"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop">[docs]</a><span class="k">def</span> <span class="nf">ProcessStop</span><span class="p">(</span><span class="n">inProcessNameWOExeStr</span><span class="p">,</span> <span class="n">inCloseForceBool</span><span class="p">,</span> <span class="n">inUserNameStr</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">sername%&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Stop process</span>
@ -826,7 +945,7 @@
<span class="c1"># Kill process</span>
<span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="n">lActivityCloseCommand</span><span class="p">)</span></div>
<div class="viewcode-block" id="ProcessListGet"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet">[docs]</a><span class="k">def</span> <span class="nf">ProcessListGet</span><span class="p">(</span><span class="n">inProcessNameWOExeList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="ProcessListGet"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet">[docs]</a><span class="k">def</span> <span class="nf">ProcessListGet</span><span class="p">(</span><span class="n">inProcessNameWOExeList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check activity of the list of processes</span>
@ -860,7 +979,7 @@
<span class="k">return</span> <span class="n">lResult</span></div>
<span class="c1"># Python def - start module function</span>
<div class="viewcode-block" id="PythonStart"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart">[docs]</a><span class="k">def</span> <span class="nf">PythonStart</span><span class="p">(</span><span class="n">inModulePathStr</span><span class="p">,</span> <span class="n">inDefNameStr</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inLogger</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="PythonStart"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart">[docs]</a><span class="k">def</span> <span class="nf">PythonStart</span><span class="p">(</span><span class="n">inModulePathStr</span><span class="p">,</span> <span class="n">inDefNameStr</span><span class="p">,</span> <span class="n">inArgList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inArgDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inLogger</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Python import module and start def</span>
@ -886,7 +1005,7 @@
<span class="c1"># Scheduler</span>
<span class="c1"># # # # # # # # # # # # # # # # # # # # # # #</span>
<div class="viewcode-block" id="SchedulerActivityTimeAddWeekly"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly">[docs]</a><span class="k">def</span> <span class="nf">SchedulerActivityTimeAddWeekly</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inTimeHHMMStr</span><span class="o">=</span><span class="s2">&quot;23:55:&quot;</span><span class="p">,</span> <span class="n">inWeekdayList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inActivityList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="SchedulerActivityTimeAddWeekly"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly">[docs]</a><span class="k">def</span> <span class="nf">SchedulerActivityTimeAddWeekly</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inTimeHHMMStr</span><span class="o">=</span><span class="s2">&quot;23:55:&quot;</span><span class="p">,</span> <span class="n">inWeekdayList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inActivityList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Add activity in time weekly</span>
@ -911,7 +1030,7 @@
<span class="c1"># RDPSession</span>
<span class="c1"># # # # # # # # # # # # # # # # # # # # # # #</span>
<div class="viewcode-block" id="RDPTemplateCreate"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate">[docs]</a><span class="k">def</span> <span class="nf">RDPTemplateCreate</span><span class="p">(</span><span class="n">inLoginStr</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="p">,</span> <span class="n">inHostStr</span><span class="o">=</span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span> <span class="n">inPortInt</span> <span class="o">=</span> <span class="mi">3389</span><span class="p">,</span> <span class="n">inWidthPXInt</span> <span class="o">=</span> <span class="mi">1680</span><span class="p">,</span> <span class="n">inHeightPXInt</span> <span class="o">=</span> <span class="mi">1050</span><span class="p">,</span>
<div class="viewcode-block" id="RDPTemplateCreate"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate">[docs]</a><span class="k">def</span> <span class="nf">RDPTemplateCreate</span><span class="p">(</span><span class="n">inLoginStr</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="p">,</span> <span class="n">inHostStr</span><span class="o">=</span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span> <span class="n">inPortInt</span> <span class="o">=</span> <span class="mi">3389</span><span class="p">,</span> <span class="n">inWidthPXInt</span> <span class="o">=</span> <span class="mi">1680</span><span class="p">,</span> <span class="n">inHeightPXInt</span> <span class="o">=</span> <span class="mi">1050</span><span class="p">,</span>
<span class="n">inUseBothMonitorBool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">inDepthBitInt</span> <span class="o">=</span> <span class="mi">32</span><span class="p">,</span> <span class="n">inSharedDriveList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create some RDP template dict to use it when connect/reconnect</span>
@ -953,7 +1072,7 @@
<span class="c1"># TODO Search dublicates in GSettings RDPlist !</span>
<span class="c1"># Return list if dublicates</span>
<div class="viewcode-block" id="RDPSessionDublicatesResolve"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDublicatesResolve">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionDublicatesResolve</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionDublicatesResolve"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDublicatesResolve">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionDublicatesResolve</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Search dublicates in GSettings RDPlist</span>
<span class="sd"> !def is developing!</span>
@ -965,7 +1084,7 @@
<span class="c1">#for lItemKeyStr in inGSettings[&quot;RobotRDPActive&quot;][&quot;RDPList&quot;]:</span>
<span class="c1"># lItemDict = inGSettings[&quot;RobotRDPActive&quot;][&quot;RDPList&quot;][lItemKeyStr]</span>
<div class="viewcode-block" id="RDPSessionConnect"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionConnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPTemplateDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inHostStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inPortStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inLoginStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionConnect"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionConnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPTemplateDict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inHostStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inPortStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inLoginStr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inPasswordStr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create new RDPSession in RobotRDPActive. Attention - activity will be ignored if key is exists</span>
<span class="sd"> 2 way of the use</span>
@ -1009,7 +1128,7 @@
<span class="k">if</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">]:</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;RDP session was not created because it is alredy exists in the RDPList. Use RDPSessionReconnect if you want to update RDP configuration.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="RDPSessionDisconnect"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionDisconnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inBreakTriggerProcessWOExeList</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionDisconnect"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionDisconnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inBreakTriggerProcessWOExeList</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Disconnect the RDP session</span>
@ -1042,7 +1161,7 @@
<span class="n">Connector</span><span class="o">.</span><span class="n">SystemRDPWarningClickOk</span><span class="p">()</span> <span class="c1"># Click all warning messages</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="RDPSessionReconnect"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionReconnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPTemplateDict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionReconnect"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionReconnect</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPTemplateDict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> RDP Session reconnect</span>
@ -1073,7 +1192,7 @@
<span class="n">Connector</span><span class="o">.</span><span class="n">Session</span><span class="p">(</span><span class="n">lRDPConfigurationItem</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="RDPSessionMonitorStop"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionMonitorStop</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionMonitorStop"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionMonitorStop</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Stop track the RDP session. Current def dont kill RDP session - only stop to track it (it can give )</span>
@ -1085,7 +1204,7 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">inRDPSessionKeyStr</span><span class="p">,</span><span class="kc">None</span><span class="p">)</span> <span class="c1"># Remove item from RDPList</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionLogoff"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionLogoff</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inBreakTriggerProcessWOExeList</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionLogoff"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionLogoff</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inBreakTriggerProcessWOExeList</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Logoff the RDP session</span>
@ -1121,7 +1240,7 @@
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">inRDPSessionKeyStr</span><span class="p">,</span><span class="kc">None</span><span class="p">)</span> <span class="c1"># Remove item from RDPList</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionResponsibilityCheck"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionResponsibilityCheck">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionResponsibilityCheck</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionResponsibilityCheck"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionResponsibilityCheck">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionResponsibilityCheck</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check RDP Session responsibility TODO NEED DEV + TEST</span>
@ -1164,7 +1283,7 @@
<span class="n">lDoCheckResponsibilityCountCurrent</span><span class="o">+=</span><span class="mi">1</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="RDPSessionProcessStartIfNotRunning"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionProcessStartIfNotRunning</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inProcessNameWEXEStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFlagGetAbsPathBool</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionProcessStartIfNotRunning"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionProcessStartIfNotRunning</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inProcessNameWEXEStr</span><span class="p">,</span> <span class="n">inFilePathStr</span><span class="p">,</span> <span class="n">inFlagGetAbsPathBool</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Start process if it is not running</span>
@ -1197,38 +1316,49 @@
<span class="n">inRDPConfigurationItem</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">][</span><span class="n">inRDPSessionKeyStr</span><span class="p">])</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionCMDRun"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionCMDRun</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="s2">&quot;CROSSCHECK&quot;</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionCMDRun"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionCMDRun</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="s2">&quot;CROSSCHECK&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Send command in RDP session</span>
<span class="sd"> :param inGSettings: Global settings dict (singleton)</span>
<span class="sd"> :param inRDPSessionKeyStr:</span>
<span class="sd"> :param inCMDStr:</span>
<span class="sd"> :param inModeStr:</span>
<span class="sd"> :return: True - CMD was executed successfully</span>
<span class="sd"> :param inModeStr: Variants:</span>
<span class="sd"> &quot;LISTEN&quot; - Get result of the cmd command in result;</span>
<span class="sd"> &quot;CROSSCHECK&quot; - Check if the command was successufully sent</span>
<span class="sd"> &quot;RUN&quot; - Run without crosscheck and get clipboard</span>
<span class="sd"> :return: # OLD &gt; True - CMD was executed successfully</span>
<span class="sd"> {</span>
<span class="sd"> &quot;OutStr&quot;: &lt;&gt; # Result string</span>
<span class="sd"> &quot;IsResponsibleBool&quot;: True|False # Flag is RDP is responsible - works only when inModeStr = CROSSCHECK</span>
<span class="sd"> }</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">lResult</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;OutStr&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="c1"># Result string</span>
<span class="s2">&quot;IsResponsibleBool&quot;</span><span class="p">:</span> <span class="kc">False</span> <span class="c1"># Flag is RDP is responsible - works only when inModeStr = CROSSCHECK</span>
<span class="p">}</span>
<span class="c1"># Check thread</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">Core</span><span class="o">.</span><span class="n">IsProcessorThread</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">):</span>
<span class="k">if</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">]:</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;RDP def was called not from processor queue - activity will be append in the processor queue.&quot;</span><span class="p">)</span>
<span class="n">lResult</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">lProcessorActivityDict</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;Def&quot;</span><span class="p">:</span> <span class="n">RDPSessionCMDRun</span><span class="p">,</span> <span class="c1"># def link or def alias (look gSettings[&quot;Processor&quot;][&quot;AliasDefDict&quot;])</span>
<span class="s2">&quot;ArgList&quot;</span><span class="p">:</span> <span class="p">[],</span> <span class="c1"># Args list</span>
<span class="s2">&quot;ArgDict&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;inRDPSessionKeyStr&quot;</span><span class="p">:</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="s2">&quot;inCMDStr&quot;</span><span class="p">:</span> <span class="n">inCMDStr</span><span class="p">,</span> <span class="s2">&quot;inModeStr&quot;</span><span class="p">:</span> <span class="n">inModeStr</span> <span class="p">},</span> <span class="c1"># Args dictionary</span>
<span class="s2">&quot;ArgGSettings&quot;</span><span class="p">:</span> <span class="s2">&quot;inGSettings&quot;</span><span class="p">,</span> <span class="c1"># Name of GSettings attribute: str (ArgDict) or index (for ArgList)</span>
<span class="s2">&quot;ArgLogger&quot;</span><span class="p">:</span> <span class="kc">None</span> <span class="c1"># Name of GSettings attribute: str (ArgDict) or index (for ArgList)</span>
<span class="p">}</span>
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ProcessorDict&quot;</span><span class="p">][</span><span class="s2">&quot;ActivityList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lResult</span><span class="p">)</span>
<span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;ProcessorDict&quot;</span><span class="p">][</span><span class="s2">&quot;ActivityList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lProcessorActivityDict</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">lResult</span> <span class="o">=</span> <span class="kc">True</span>
<span class="c1">#lResult = True</span>
<span class="c1"># Calculate the session Hex</span>
<span class="n">lSessionHex</span> <span class="o">=</span> <span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">inRDPSessionKeyStr</span><span class="p">,{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;SessionHex&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="c1"># Run CMD</span>
<span class="k">if</span> <span class="n">lSessionHex</span><span class="p">:</span>
<span class="n">Connector</span><span class="o">.</span><span class="n">SessionCMDRun</span><span class="p">(</span><span class="n">inSessionHex</span><span class="o">=</span><span class="n">lSessionHex</span><span class="p">,</span> <span class="n">inCMDCommandStr</span><span class="o">=</span><span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="n">inModeStr</span><span class="p">,</span> <span class="n">inLogger</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">],</span>
<span class="n">lResult</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">SessionCMDRun</span><span class="p">(</span><span class="n">inSessionHex</span><span class="o">=</span><span class="n">lSessionHex</span><span class="p">,</span> <span class="n">inCMDCommandStr</span><span class="o">=</span><span class="n">inCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="n">inModeStr</span><span class="p">,</span> <span class="n">inLogger</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">],</span>
<span class="n">inRDPConfigurationItem</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">][</span><span class="n">inRDPSessionKeyStr</span><span class="p">])</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionProcessStop"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionProcessStop</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inProcessNameWEXEStr</span><span class="p">,</span> <span class="n">inFlagForceCloseBool</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionProcessStop"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionProcessStop</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inProcessNameWEXEStr</span><span class="p">,</span> <span class="n">inFlagForceCloseBool</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create CMD str to stop process</span>
@ -1261,7 +1391,7 @@
<span class="n">Connector</span><span class="o">.</span><span class="n">SessionCMDRun</span><span class="p">(</span><span class="n">inSessionHex</span><span class="o">=</span><span class="n">lSessionHex</span><span class="p">,</span> <span class="n">inCMDCommandStr</span><span class="o">=</span><span class="n">lCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="s2">&quot;CROSSCHECK&quot;</span><span class="p">,</span> <span class="n">inLogger</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">],</span> <span class="n">inRDPConfigurationItem</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">][</span><span class="n">inRDPSessionKeyStr</span><span class="p">])</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionFileStoredSend"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionFileStoredSend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inHostFilePathStr</span><span class="p">,</span> <span class="n">inRDPFilePathStr</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionFileStoredSend"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionFileStoredSend</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inHostFilePathStr</span><span class="p">,</span> <span class="n">inRDPFilePathStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Send file from Host to Session RDP using shared drive in RDP</span>
@ -1293,7 +1423,7 @@
<span class="n">Connector</span><span class="o">.</span><span class="n">SessionCMDRun</span><span class="p">(</span><span class="n">inSessionHex</span><span class="o">=</span><span class="n">lSessionHex</span><span class="p">,</span> <span class="n">inCMDCommandStr</span><span class="o">=</span><span class="n">lCMDStr</span><span class="p">,</span> <span class="n">inModeStr</span><span class="o">=</span><span class="s2">&quot;LISTEN&quot;</span><span class="p">,</span> <span class="n">inClipboardTimeoutSec</span> <span class="o">=</span> <span class="mi">120</span><span class="p">,</span> <span class="n">inLogger</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;Logger&quot;</span><span class="p">],</span> <span class="n">inRDPConfigurationItem</span><span class="o">=</span><span class="n">inGSettings</span><span class="p">[</span><span class="s2">&quot;RobotRDPActive&quot;</span><span class="p">][</span><span class="s2">&quot;RDPList&quot;</span><span class="p">][</span><span class="n">inRDPSessionKeyStr</span><span class="p">])</span>
<span class="k">return</span> <span class="n">lResult</span></div>
<div class="viewcode-block" id="RDPSessionFileStoredRecieve"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionFileStoredRecieve</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPFilePathStr</span><span class="p">,</span> <span class="n">inHostFilePathStr</span><span class="p">):</span>
<div class="viewcode-block" id="RDPSessionFileStoredRecieve"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve">[docs]</a><span class="k">def</span> <span class="nf">RDPSessionFileStoredRecieve</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">,</span> <span class="n">inRDPSessionKeyStr</span><span class="p">,</span> <span class="n">inRDPFilePathStr</span><span class="p">,</span> <span class="n">inHostFilePathStr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Receive file from Session RDP to Host using shared drive in RDP</span>
@ -1328,7 +1458,7 @@
<span class="c1"># # # # # Start orchestrator</span>
<span class="c1"># # # # # # # # # # # # # # # # # # # # # # #</span>
<div class="viewcode-block" id="GSettingsAutocleaner"><a class="viewcode-back" href="../../../Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsAutocleaner">[docs]</a><span class="k">def</span> <span class="nf">GSettingsAutocleaner</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">):</span>
<div class="viewcode-block" id="GSettingsAutocleaner"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsAutocleaner">[docs]</a><span class="k">def</span> <span class="nf">GSettingsAutocleaner</span><span class="p">(</span><span class="n">inGSettings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Interval gsettings auto cleaner</span>
@ -1453,7 +1583,8 @@
<span class="c1"># Orchestrator start activity</span>
<span class="k">if</span> <span class="n">lL</span><span class="p">:</span> <span class="n">lL</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Orchestrator start activity run&quot;</span><span class="p">)</span> <span class="c1">#Logging</span>
<span class="k">for</span> <span class="n">lActivityItem</span> <span class="ow">in</span> <span class="n">gSettingsDict</span><span class="p">[</span><span class="s2">&quot;OrchestratorStart&quot;</span><span class="p">][</span><span class="s2">&quot;ActivityList&quot;</span><span class="p">]:</span>
<span class="n">Processor</span><span class="o">.</span><span class="n">ActivityListOrDict</span><span class="p">(</span><span class="n">lActivityItem</span><span class="p">)</span>
<span class="c1"># Processor.ActivityListOrDict(lActivityItem)</span>
<span class="n">Processor</span><span class="o">.</span><span class="n">ActivityListExecute</span><span class="p">(</span><span class="n">inGSettings</span><span class="o">=</span><span class="n">gSettingsDict</span><span class="p">,</span><span class="n">inActivityList</span><span class="o">=</span><span class="n">BackwardCompatibility</span><span class="o">.</span><span class="n">v1_2_0_ProcessorOld2NewActivityDict</span><span class="p">(</span><span class="n">lActivityItem</span><span class="p">))</span>
<span class="c1"># Processor thread</span>
<span class="n">lProcessorThread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span> <span class="n">Processor</span><span class="o">.</span><span class="n">ProcessorRunSync</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;inGSettings&quot;</span><span class="p">:</span><span class="n">gSettingsDict</span><span class="p">,</span> <span class="s2">&quot;inRobotRDPThreadControlDict&quot;</span><span class="p">:</span><span class="n">lRobotRDPThreadControlDict</span><span class="p">})</span>

@ -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:
.. 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

@ -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

@ -1,6 +1,6 @@
.. _gSettingsTemplate:
************************
gSettings Template
3. gSettings Template
************************
gSettings structure

@ -1,5 +1,5 @@
************************
How to start
4. How to start
************************
Start configuration example

@ -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/*

@ -92,9 +92,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
@ -178,17 +179,17 @@
<h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd">AgentActivityItemAdd() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentActivityItemAdd">AgentActivityItemAdd() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSCMD">AgentOSCMD() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSCMD">AgentOSCMD() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBase64StrCreate">AgentOSFileBinaryDataBase64StrCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBase64StrCreate">AgentOSFileBinaryDataBase64StrCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBytesCreate">AgentOSFileBinaryDataBytesCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileBinaryDataBytesCreate">AgentOSFileBinaryDataBytesCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileTextDataStrCreate">AgentOSFileTextDataStrCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSFileTextDataStrCreate">AgentOSFileTextDataStrCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -196,17 +197,17 @@
<h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsAutocleaner">GSettingsAutocleaner() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsAutocleaner">GSettingsAutocleaner() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend">GSettingsKeyListValueAppend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueAppend">GSettingsKeyListValueAppend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueGet">GSettingsKeyListValueGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueGet">GSettingsKeyListValueGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus">GSettingsKeyListValueOperatorPlus() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueOperatorPlus">GSettingsKeyListValueOperatorPlus() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueSet">GSettingsKeyListValueSet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.GSettingsKeyListValueSet">GSettingsKeyListValueSet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -218,7 +219,7 @@
module
<ul>
<li><a href="Orchestrator/Orchestrator.html#module-pyOpenRPA.Orchestrator.__Orchestrator__">pyOpenRPA.Orchestrator.__Orchestrator__</a>
<li><a href="Orchestrator/02_Defs.html#module-pyOpenRPA.Orchestrator.__Orchestrator__">pyOpenRPA.Orchestrator.__Orchestrator__</a>
</li>
<li><a href="Robot/Robot.html#module-pyOpenRPA.Robot.UIDesktop">pyOpenRPA.Robot.UIDesktop</a>
</li>
@ -229,15 +230,15 @@
<h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart">OrchestratorRestart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart">OrchestratorRestart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">OrchestratorSessionSave() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">OrchestratorSessionSave() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCMD">OSCMD() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCMD">OSCMD() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCredentialsVerify">OSCredentialsVerify() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCredentialsVerify">OSCredentialsVerify() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -245,29 +246,29 @@
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted">ProcessIsStarted() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted">ProcessIsStarted() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet">ProcessListGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet">ProcessListGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend">ProcessorActivityItemAppend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend">ProcessorActivityItemAppend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate">ProcessorActivityItemCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate">ProcessorActivityItemCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate">ProcessorAliasDefCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate">ProcessorAliasDefCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate">ProcessorAliasDefUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate">ProcessorAliasDefUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart">ProcessStart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart">ProcessStart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop">ProcessStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop">ProcessStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li>
pyOpenRPA.Orchestrator.__Orchestrator__
<ul>
<li><a href="Orchestrator/Orchestrator.html#module-pyOpenRPA.Orchestrator.__Orchestrator__">module</a>
<li><a href="Orchestrator/02_Defs.html#module-pyOpenRPA.Orchestrator.__Orchestrator__">module</a>
</li>
</ul></li>
<li>
@ -277,7 +278,7 @@
<li><a href="Robot/Robot.html#module-pyOpenRPA.Robot.UIDesktop">module</a>
</li>
</ul></li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart">PythonStart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart">PythonStart() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -285,33 +286,33 @@
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun">RDPSessionCMDRun() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun">RDPSessionCMDRun() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect">RDPSessionConnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect">RDPSessionConnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect">RDPSessionDisconnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect">RDPSessionDisconnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDublicatesResolve">RDPSessionDublicatesResolve() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDublicatesResolve">RDPSessionDublicatesResolve() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve">RDPSessionFileStoredRecieve() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve">RDPSessionFileStoredRecieve() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend">RDPSessionFileStoredSend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend">RDPSessionFileStoredSend() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff">RDPSessionLogoff() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff">RDPSessionLogoff() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop">RDPSessionMonitorStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop">RDPSessionMonitorStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning">RDPSessionProcessStartIfNotRunning() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning">RDPSessionProcessStartIfNotRunning() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop">RDPSessionProcessStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop">RDPSessionProcessStop() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect">RDPSessionReconnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect">RDPSessionReconnect() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionResponsibilityCheck">RDPSessionResponsibilityCheck() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionResponsibilityCheck">RDPSessionResponsibilityCheck() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate">RDPTemplateCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate">RDPTemplateCreate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -319,7 +320,7 @@
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly">SchedulerActivityTimeAddWeekly() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly">SchedulerActivityTimeAddWeekly() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -327,13 +328,13 @@
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck">UACKeyListCheck() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck">UACKeyListCheck() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate">UACSuperTokenUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate">UACSuperTokenUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate">UACUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate">UACUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>
@ -341,21 +342,21 @@
<h2 id="W">W</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate">WebCPUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate">WebCPUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef">WebURLConnectDef() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef">WebURLConnectDef() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile">WebURLConnectFile() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile">WebURLConnectFile() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder">WebURLConnectFolder() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder">WebURLConnectFolder() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet">WebUserInfoGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet">WebUserInfoGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken">WebUserIsSuperToken() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken">WebUserIsSuperToken() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/Orchestrator.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet">WebUserUACHierarchyGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet">WebUserUACHierarchyGet() (in module pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
</ul></td>
</tr></table>

@ -93,9 +93,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
@ -170,7 +171,10 @@
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">ROBOT</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Robot/Robot.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Robot/Robot.html">Description</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Robot/Robot.html#module-pyOpenRPA.Robot.UIDesktop">pyOpenRPA Robot</a></li>
</ul>
</li>
</ul>
</div>
<div class="toctree-wrapper compound">
@ -182,9 +186,21 @@
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/01_Orchestrator.html">1. Description</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/01_Orchestrator.html#global-settings-dict-concept">Global settings dict concept</a></li>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/01_Orchestrator.html#orchestrator-how-to-configure">Orchestrator how to configure</a></li>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/01_Orchestrator.html#orchestrator-architecture">Orchestrator architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/01_Orchestrator.html#component-processor">Component Processor</a></li>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/01_Orchestrator.html#references">References</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/02_Defs.html">2. Defs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/02_Defs.html#pyopenrpa-orchestrator-orchestrator">pyOpenRPA.Orchestrator.__Orchestrator__</a></li>
<li class="toctree-l2"><a class="reference internal" href="Orchestrator/02_Defs.html#references">References</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
</div>
</div>

Binary file not shown.

@ -95,9 +95,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>
@ -181,7 +182,7 @@
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="Orchestrator/Orchestrator.html#module-pyOpenRPA.Orchestrator.__Orchestrator__"><code class="xref">pyOpenRPA.Orchestrator.__Orchestrator__</code></a></td><td>
<a href="Orchestrator/02_Defs.html#module-pyOpenRPA.Orchestrator.__Orchestrator__"><code class="xref">pyOpenRPA.Orchestrator.__Orchestrator__</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>

@ -95,9 +95,10 @@
</ul>
<p class="caption"><span class="caption-text">ORCHESTRATOR</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/HowToStart.html">How to start</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/Orchestrator.html">Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/gSettingsTemplate.html">gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/01_Orchestrator.html">1. Description</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/02_Defs.html">2. Defs</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/03_gSettingsTemplate.html">3. gSettings Template</a></li>
<li class="toctree-l1"><a class="reference internal" href="Orchestrator/04_HowToStart.html">4. How to start</a></li>
</ul>

File diff suppressed because one or more lines are too long

@ -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 cant 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`_
```

@ -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 cant 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 cant 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 cant 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`_
```

@ -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": {

@ -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

Loading…
Cancel
Save