From e673287735e0a45c86fe42c2b1d1a6e6746a4d50 Mon Sep 17 00:00:00 2001 From: Ivan Maslov Date: Thu, 30 Jun 2022 00:24:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Orchestrator/__Orchestrator__.py | 257 ++++++++++-------- 1 file changed, 140 insertions(+), 117 deletions(-) diff --git a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py index 90a2866c..06f16e95 100644 --- a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py +++ b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py @@ -1086,20 +1086,20 @@ def WebRequestParseBodyJSON(inRequest=None): def WebRequestParsePath(inRequest=None): """ - Parse the request - extract the url. Example: /pyOpenRPA/Debugging/DefHelper/... + Извлечь декодированный URL путь из HTTP запроса пользователя в формате строки. - :param inRequest: inRequest from the server. Optional if call def from request thread - :return: Str, Example: /pyOpenRPA/Debugging/DefHelper/... + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя + :return: str, пример: /pyOpenRPA/Debugging/DefHelper """ if inRequest is None: inRequest = WebRequestGet() return urllib.parse.unquote(inRequest.path) def WebRequestParseFile(inRequest=None): """ - Parse the request - extract the file (name, body in bytes) + Извлечь файл (наименование + содержимое в виде строки байт b'') из HTTP запроса пользователя. - :param inRequest: inRequest from the server. Optional if call def from request thread - :return: (FileNameStr, FileBodyBytes) or (None, None) + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя + :return: Кортеж формата (FileNameStr, FileBodyBytes) or (None, None), если файл не был обнаружен """ if inRequest is None: inRequest = WebRequestGet() lResultTurple=(None,None) @@ -1123,13 +1123,12 @@ def WebRequestParseFile(inRequest=None): def WebRequestResponseSend(inResponeStr, inRequest=None, inContentTypeStr: str = None, inHeadersDict: dict = None): """ - Set response for the request + Установить ответ на HTTP запрос пользователя. - :param inResponeStr: Response string - :param inRequest: inRequest from the server. Optional if call def from request thread - :param inContentTypeStr: Type content-type. Example: "html/text" - :param inHeadersDict: Dict of the headers for the response - :return: + :param inResponeStr: Тело ответа (строка) + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя + :param inContentTypeStr: МИМЕ тип. Пример: "html/text" + :param inHeadersDict: Словарь (dict) ключей, которые добавить в headers HTTP ответа на запрос пользователя """ if inRequest is None: inRequest = WebRequestGet() inRequest.OpenRPAResponseDict["Body"] = bytes(inResponeStr, "utf8") @@ -1141,8 +1140,7 @@ def WebRequestResponseSend(inResponeStr, inRequest=None, inContentTypeStr: str = def WebRequestGet(): """ - Return the web request instance if current thread was created by web request from client. else return None - + Вернуть экземпляр HTTP запроса, если функция вызвана в потоке, который был порожден для отработки HTTP запроса пользователя. """ lCurrentThread = threading.current_thread() if hasattr(lCurrentThread, "request"): @@ -1150,10 +1148,10 @@ def WebRequestGet(): def WebUserInfoGet(inRequest=None): """ - Return User info about request + Информация о пользователе, который отправил HTTP запрос. - :param inRequest: inRequest from the server. Optional if call def from request thread - :return: {"DomainUpperStr": "", "UserNameUpperStr": ""} + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя + :return: Сведения в формате {"DomainUpperStr": "PYOPENRPA", "UserNameUpperStr": "IVAN.MASLOV"} """ if inRequest is None: inRequest = WebRequestGet() lDomainUpperStr = inRequest.OpenRPA["Domain"].upper() @@ -1162,11 +1160,11 @@ def WebUserInfoGet(inRequest=None): def WebUserIsSuperToken(inRequest = None, inGSettings = None): """ - Return bool if request is authentificated with supetoken (token which is never expires) + Проверить, авторизован ли HTTP запрос с помощью супер токена (токен, который не истекает). - :param inRequest: inRequest from the server. Optional if call def from request thread + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :return: bool True - is supertoken; False - is not supertoken + :return: True - является супертокеном; False - не является супертокеном """ if inRequest is None: inRequest = WebRequestGet() inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings @@ -1177,10 +1175,10 @@ def WebUserIsSuperToken(inRequest = None, inGSettings = None): def WebUserUACHierarchyGet(inRequest = None): """ - Return User UAC Hierarchy DICT Return {...} + Вернуть словарь доступа UAC в отношении пользователя, который выполнил HTTP запрос inRequest - :param inRequest: inRequest from the server. Optional if call def from request thread - :return: UAC Dict {} + :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя + :return: UAC словарь доступа или {}, что означает полный доступ """ if inRequest is None: inRequest = WebRequestGet() return inRequest.UserRoleHierarchyGet() @@ -1200,10 +1198,10 @@ if __name__ == "pyOpenRPA.Orchestrator.__Orchestrator__" and "pyOpenRPA.Orchestr def GSettingsGet(inGSettings=None): """ - Get the GSettings from the singleton module. + Вернуть глобальный словарь настроек Оркестратора. Во время выполнения программы глобальный словарь настроек существует в единственном экземпляре (синглтон) - :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :return: GSettings + :param inGSettings: Дополнительный словарь настроек, который необходимо добавить в основной глобальный словарь настроек Оркестратора (синглтон) + :return: Глобальный словарь настроек GSettings """ global GSettings # identify the global variable # Merge dictionaries if some new dictionary has come @@ -1213,12 +1211,13 @@ def GSettingsGet(inGSettings=None): def GSettingsKeyListValueSet(inValue, inKeyList=None, inGSettings = None): """ - Set value in GSettings by the key list + Установить значение из глобального словаря настроек Оркестратора GSettings по списку ключей. + + Пример: Для того, чтобы установить значение для ключа car в словаре {"complex":{"car":"green"}, "simple":"HELLO"}, необходимо передать список ключей: ["complex", "car"] :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inValue: - :param inKeyList: - :return: bool + :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings + :param inKeyList: Список ключей, по адресу которого установить значение в GSettings """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if inKeyList is None: inKeyList = [] @@ -1235,11 +1234,11 @@ def GSettingsKeyListValueSet(inValue, inKeyList=None, inGSettings = None): def GSettingsKeyListValueGet(inKeyList=None, inGSettings = None): """ - Get the value from the GSettings by the key list + Получить значение из глобального словаря настроек Оркестратора GSettings по списку ключей. :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inKeyList: - :return: value any type + :param inKeyList: Список ключей, по адресу которого получить значение из GSettings + :return: Значение (тип данных определяется форматом хранения в GSettings) """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if inKeyList is None: inKeyList = [] @@ -1255,11 +1254,11 @@ def GSettingsKeyListValueGet(inKeyList=None, inGSettings = None): def GSettingsKeyListValueAppend(inValue, inKeyList=None, inGSettings = None): """ - Append value in GSettings by the key list + Применить операцию .append к обьекту, расположенному по адресу списка ключей inKeyList в глобальном словаре настроек Оркестратора GSettings. Пример: Добавить значение в конец списка (list). .. code-block:: python - # USAGE + # ПРИМЕР from pyOpenRPA import Orchestrator Orchestrator.GSettingsKeyListValueAppend( @@ -1276,9 +1275,8 @@ def GSettingsKeyListValueAppend(inValue, inKeyList=None, inGSettings = None): #} :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :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 + :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings + :param inKeyList: Список ключей, по адресу которого выполнить добавление в конец списка (list) """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if inKeyList is None: inKeyList = [] @@ -1295,11 +1293,11 @@ def GSettingsKeyListValueAppend(inValue, inKeyList=None, inGSettings = None): def GSettingsKeyListValueOperatorPlus(inValue, inKeyList=None, inGSettings = None): """ - Execute plus operation between 2 lists (1:inValue and 2:gSettings by the inKeyList) + Применить оператор сложения (+) к обьекту, расположенному по адресу списка ключей inKeyList в глобальном словаре настроек Оркестратора GSettings. Пример: соединить 2 списка (list). .. code-block:: python - # USAGE + # ПРИМЕР from pyOpenRPA import Orchestrator Orchestrator.GSettingsKeyListValueOperatorPlus( @@ -1319,9 +1317,8 @@ def GSettingsKeyListValueOperatorPlus(inValue, inKeyList=None, inGSettings = Non #} :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :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 + :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings + :param inKeyList: Список ключей, по адресу которого выполнить добавление в конец списка (list) """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if inKeyList is None: inKeyList = [] @@ -1338,19 +1335,19 @@ def GSettingsKeyListValueOperatorPlus(inValue, inKeyList=None, inGSettings = Non def StorageRobotExists(inRobotNameStr): """ - Check if robot storage exists + Проверить, существует ли ключ inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings > StarageDict) - :param inRobotNameStr: Robot name (case sensitive) - :return: True - robot storage exist; False - does not exist + :param inRobotNameStr: Наименование (ключ) робота. !ВНИМАНИЕ! Наименование чувствительно к регистру + :return: True - ключ робота присутствует в хранилище; False - отсутствует """ return inRobotNameStr in GSettingsGet()["StorageDict"] def StorageRobotGet(inRobotNameStr): """ - Get the robot storage by the robot name. If Robot storage is not exist - function will create it + Получить содержимое по ключу робота inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings > StarageDict) - :param inRobotNameStr: Robot name (case sensitive) - :return: Dict + :param inRobotNameStr: Наименование (ключ) робота. !ВНИМАНИЕ! Наименование чувствительно к регистру + :return: Значение или структура, которая расположена по адресу (GSettings > StarageDict > inRobotNameStr) """ if inRobotNameStr not in GSettingsGet()["StorageDict"]: GSettingsGet()["StorageDict"][inRobotNameStr]={} @@ -1358,9 +1355,9 @@ def StorageRobotGet(inRobotNameStr): def ProcessorAliasDefCreate(inDef, inAliasStr=None, inGSettings = 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) - Deprecated. See ActivityItemDefAliasCreate + Создать синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна). + + Старая версия. Новую версию см. ActivityItemDefAliasCreate .. code-block:: python @@ -1375,18 +1372,19 @@ def ProcessorAliasDefCreate(inDef, inAliasStr=None, inGSettings = None): inAliasStr="TestDefAlias") # Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr) + + :param inDef: функция Python + :param inAliasStr: Строковый ключ (синоним), который можно будет использовать в Активности (ActivityItem) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inDef: Def - :param inAliasStr: String alias for associated def - :return: str Alias string (Alias can be regenerated if previous alias was occupied) + :return: Строковый ключ, который был назначен. Ключ может быть изменен, если входящий текстовый ключ был уже занят. """ return ActivityItemDefAliasCreate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings) def ProcessorAliasDefUpdate(inDef, inAliasStr, inGSettings = None): """ - 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) - Deprecated. See ActivityItemDefAliasUpdate + Обновить синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна). + + Старая версия. Новую версию см. ActivityItemDefAliasUpdate .. code-block:: python @@ -1402,19 +1400,19 @@ def ProcessorAliasDefUpdate(inDef, inAliasStr, inGSettings = None): # Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias") :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inDef: Def - :param inAliasStr: String alias for associated def - :return: str Alias string + :param inDef: функция Python + :param inAliasStr: Строковый ключ (синоним), который можно будет использовать в Активности (ActivityItem) + :return: Строковый ключ, который был назначен. Ключ будет тем же, если входящий текстовый ключ был уже занят. """ return ActivityItemDefAliasUpdate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings) # ActivityItem defs def ActivityItemHelperDefList(inDefQueryStr=None): """ - Create list of the available Def names in activity item. You can use query def filter via arg inDefQueryStr + Получить список синонимов (текстовых ключей), доступных для использования в Активностях (ActivityItem). - :param inDefStr: - :return: ["ActivityItemDefAliasUpdate", "ActivityItemDefAliasCreate", etc...] + :param inDefStr: Часть текстового ключ (начало / середина / конец) + :return: Список доступных ключей в формате: ["ActivityItemDefAliasUpdate", "ActivityItemDefAliasCreate", etc...] """ lResultList = [] if inDefQueryStr is not None: # do search alg @@ -1428,10 +1426,17 @@ def ActivityItemHelperDefList(inDefQueryStr=None): def ActivityItemHelperDefAutofill(inDef): """ - Detect def by the name and prepare the activity item dict with values. + Анализ аргументов функции по синониму (текстовому ключу). - :param inDef: - :return: + :param inDef: Часть текстового ключ (начало / середина / конец) + :return: Преднастроенная структура активности (ActivityItem) + { + "Def": None, + "ArgList": [], + "ArgDict": {}, + "ArgGSettingsStr": None, + "ArgLoggerStr": None + } """ lResultDict = { "Def": None, @@ -1460,14 +1465,14 @@ def ActivityItemHelperDefAutofill(inDef): def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None, inGUIDStr = None, inThreadBool = False): """ - Create activity item. Activity item can be used as list item in ProcessorActivityItemAppend or in Processor.ActivityListExecute. + Создать Активность (ActivityItem). Активность можно использовать в ProcessorActivityItemAppend или в Processor.ActivityListExecute или в функциях работы с Агентами. .. code-block:: python - # USAGE + # ПРИМЕР from pyOpenRPA import Orchestrator - # EXAMPLE 1 + # ВАРИАНТ 1 def TestDef(inArg1Str, inGSettings, inLogger): pass lActivityItem = Orchestrator.ActivityItemCreate( @@ -1485,7 +1490,7 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr= # "ArgLogger": "inLogger" # } - # EXAMPLE 2 + # ВАРИАНТ 2 def TestDef(inArg1Str): pass Orchestrator.ActivityItemDefAliasUpdate( @@ -1507,14 +1512,23 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr= # "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 - :param inGUIDStr: GUID which you can specify. If None the GUID will be generated - :param inThreadBool: True - execute ActivityItem in new thread; False - in processor thread - :return: {} + :param inDef: Функция Python или синоним (текстовый ключ) + :param inArgList: Список (list) неименованных аргументов к функции + :param inArgDict: Словарь (dict) именованных аргументов к функции + :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать) + :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать) + :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически + :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди + :return: + lActivityItemDict= { + "Def":inDef, # def link or def alias (look gSettings["Processor"]["AliasDefDict"]) + "ArgList":inArgList, # Args list + "ArgDict":inArgDict, # Args dictionary + "ArgGSettings": inArgGSettingsStr, # Name of GSettings attribute: str (ArgDict) or index (for ArgList) + "ArgLogger": inArgLoggerStr, # Name of GSettings attribute: str (ArgDict) or index (for ArgList) + "GUIDStr": inGUIDStr, + "ThreadBool": inThreadBool + } """ # Work about GUID in Activity items if inGUIDStr is None: @@ -1535,12 +1549,11 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr= def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = 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(): @@ -1551,10 +1564,10 @@ def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = None): inAliasStr="TestDefAlias") # Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr) + :param inDef: функция Python + :param inAliasStr: Строковый ключ (синоним), который можно будет использовать в Активности (ActivityItem) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inDef: Def - :param inAliasStr: String alias for associated def - :return: str Alias string (Alias can be regenerated if previous alias was occupied) + :return: Строковый ключ, который был назначен. Ключ может быть изменен, если входящий текстовый ключ был уже занят. """ #TODO Pay attention - New alias can be used too - need to create more complex algorythm to create new alias! inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings @@ -1569,9 +1582,7 @@ def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = None): def ActivityItemDefAliasModulesLoad(): """ - Load all def from sys.modules... in ActivityItem def alias dict - - :return: None + Загрузить все функции из импортированных модулей sys.modules в ActivityItem синонимы - полезно для отладки со стороны панели управления. """ lL = OrchestratorLoggerGet() lL.info(f"ActivityItem aliases: start to load sys.modules") @@ -1589,9 +1600,8 @@ def ActivityItemDefAliasModulesLoad(): def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None): """ - 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 @@ -1605,10 +1615,10 @@ def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None): inAliasStr="TestDefAlias") # Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias") + :param inDef: функция Python + :param inAliasStr: Строковый ключ (синоним), который можно будет использовать в Активности (ActivityItem) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :param inDef: Def - :param inAliasStr: String alias for associated def - :return: str Alias string + :return: Строковый ключ, который был назначен. Ключ будет тем же, если входящий текстовый ключ был уже занят. """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if callable(inDef): inGSettings["ProcessorDict"]["AliasDefDict"][inAliasStr] = inDef @@ -1619,14 +1629,16 @@ def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None): def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None, inGUIDStr = None, inThreadBool = False): """ - Create activity item. Activity item can be used as list item in ProcessorActivityItemAppend or in Processor.ActivityListExecute. - Deprecated. See ActivityItemCreate + Создать Активность (ActivityItem). Активность можно использовать в ProcessorActivityItemAppend или в Processor.ActivityListExecute или в функциях работы с Агентами. + + Старая версия. Новую версию см. в ActivityItemCreate + .. code-block:: python - # USAGE + # ПРИМЕР from pyOpenRPA import Orchestrator - # EXAMPLE 1 + # ВАРИАНТ 1 def TestDef(inArg1Str, inGSettings, inLogger): pass lActivityItem = Orchestrator.ProcessorActivityItemCreate( @@ -1644,7 +1656,7 @@ def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSet # "ArgLogger": "inLogger" # } - # EXAMPLE 2 + # ВАРИАНТ 2 def TestDef(inArg1Str): pass Orchestrator.ProcessorAliasDefUpdate( @@ -1666,22 +1678,31 @@ def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSet # "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 - :param inGUIDStr: GUID which you can specify. If None the GUID will be generated - :param inThreadBool: True - execute ActivityItem in new thread; False - in processor thread - :return: {} + :param inDef: Функция Python или синоним (текстовый ключ) + :param inArgList: Список (list) неименованных аргументов к функции + :param inArgDict: Словарь (dict) именованных аргументов к функции + :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать) + :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать) + :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически + :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди + :return: + lActivityItemDict= { + "Def":inDef, # def link or def alias (look gSettings["Processor"]["AliasDefDict"]) + "ArgList":inArgList, # Args list + "ArgDict":inArgDict, # Args dictionary + "ArgGSettings": inArgGSettingsStr, # Name of GSettings attribute: str (ArgDict) or index (for ArgList) + "ArgLogger": inArgLoggerStr, # Name of GSettings attribute: str (ArgDict) or index (for ArgList) + "GUIDStr": inGUIDStr, + "ThreadBool": inThreadBool + } """ return ActivityItemCreate(inDef=inDef, inArgList=inArgList, inArgDict=inArgDict, inArgGSettingsStr=inArgGSettingsStr, inArgLoggerStr=inArgLoggerStr, inGUIDStr=inGUIDStr, inThreadBool=inThreadBool) def ProcessorActivityItemAppend(inGSettings = None, inDef=None, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None, inActivityItemDict=None): """ - Create and add activity item in processor queue. - + Добавить активность (ActivityItem) в процессорную очередь. + .. code-block:: python # USAGE @@ -1718,13 +1739,15 @@ def ProcessorActivityItemAppend(inGSettings = None, inDef=None, inArgList=None, # Activity have been already append in the processor queue :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) - :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 - :param inActivityItemDict: Fill if you already have ActivityItemDict (don't fill inDef, inArgList, inArgDict, inArgGSettingsStr, inArgLoggerStr) - :return ActivityItem GUIDStr + :param inDef: Функция Python или синоним (текстовый ключ) + :param inArgList: Список (list) неименованных аргументов к функции + :param inArgDict: Словарь (dict) именованных аргументов к функции + :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать) + :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать) + :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически + :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди + :param inActivityItemDict: Альтернативный вариант заполнения, если уже имеется Активность (ActivityItem). В таком случае не требуется заполнять аргументы inDef, inArgList, inArgDict, inArgGSettingsStr, inArgLoggerStr + :return ГУИД активности (ActivityItem) """ inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings if inActivityItemDict is None: