From 32278ccde5a31c940c90ac527f653ef76d2d6554 Mon Sep 17 00:00:00 2001 From: Ivan Maslov Date: Tue, 19 Jan 2021 21:19:54 +0300 Subject: [PATCH] New wiki information about Orchestrator module --- Sources/GuideSphinx/index.rst | 79 +++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/Sources/GuideSphinx/index.rst b/Sources/GuideSphinx/index.rst index 9b83f9e6..40c44ce8 100644 --- a/Sources/GuideSphinx/index.rst +++ b/Sources/GuideSphinx/index.rst @@ -27,3 +27,82 @@ pyOpenRPA Orchestrator ===================================== .. automodule:: pyOpenRPA.Orchestrator.__Orchestrator__ :members: + + + + + +Orchestrator 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 !LINK! + + + +Orchestrator architecture +============================ +Orchestrator has several source code components: +- User/robot activity consolidated queue single thread (Processor) +- User/robot activity asynchonus many threads (Processor) +- Scheduler single thread (main) +- RDP keep active many thread +- Autocleaner single thread +- GUI keep active single thread +- HTTP web server single thread (create user socket threads) +- + +Below you can find more information about all of the component. + +Component Processor +========================= +Sync - Append activity list to consolidated processor queue. Execution goes sequency by the activity list order + +Async - Create New thread to execute the activity list + +- Activity list +Liast of the activity item + +- Activity item +Activity item is universal mechanism to execute different algorythms from any sources. +The core feature of the Activity is to call python defs with args and kwargs. +If you need to init do some activity you can write some python def, then create Activity item with current def. +ATTENTION: In some cases (such as web transmition), when you can't transmit python def as object you can use symbolic names for python defs. It is apply you to init all of you want from the web UI. + +?Why i cant transmit python def from the web +Because the WEB space is not the Python executable space. Interaction between it spaces create by JSON protocol. So, we know than JSON apply int, float, str, bool, None, list, dict - that is all. +{ + "Def":"DefAliasTest", # def link or def alias (look gSettings["Processor"]["AliasDefDict"]) + "ArgList":[1,2,3], # Args list + "ArgDict":{"ttt":1,"222":2,"dsd":3}, # Args dictionary + "ArgGSettings": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList) + "ArgLogger": None # Name of GSettings attribute: str (ArgDict) or index (for ArgList) +}# Pay attention! Do not left comma symbol after the end of the dict - it can be interpretated like a turple.. + +