Перевод в процессе

dev-linux
Ivan Maslov 2 years ago
parent 5b6f0fa103
commit e673287735

@ -1086,20 +1086,20 @@ def WebRequestParseBodyJSON(inRequest=None):
def WebRequestParsePath(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 :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:return: Str, Example: /pyOpenRPA/Debugging/DefHelper/... :return: str, пример: /pyOpenRPA/Debugging/DefHelper
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
return urllib.parse.unquote(inRequest.path) return urllib.parse.unquote(inRequest.path)
def WebRequestParseFile(inRequest=None): 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 :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:return: (FileNameStr, FileBodyBytes) or (None, None) :return: Кортеж формата (FileNameStr, FileBodyBytes) or (None, None), если файл не был обнаружен
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
lResultTurple=(None,None) lResultTurple=(None,None)
@ -1123,13 +1123,12 @@ def WebRequestParseFile(inRequest=None):
def WebRequestResponseSend(inResponeStr, inRequest=None, inContentTypeStr: str = None, inHeadersDict: dict = None): def WebRequestResponseSend(inResponeStr, inRequest=None, inContentTypeStr: str = None, inHeadersDict: dict = None):
""" """
Set response for the request Установить ответ на HTTP запрос пользователя.
:param inResponeStr: Response string :param inResponeStr: Тело ответа (строка)
:param inRequest: inRequest from the server. Optional if call def from request thread :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:param inContentTypeStr: Type content-type. Example: "html/text" :param inContentTypeStr: МИМЕ тип. Пример: "html/text"
:param inHeadersDict: Dict of the headers for the response :param inHeadersDict: Словарь (dict) ключей, которые добавить в headers HTTP ответа на запрос пользователя
:return:
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
inRequest.OpenRPAResponseDict["Body"] = bytes(inResponeStr, "utf8") inRequest.OpenRPAResponseDict["Body"] = bytes(inResponeStr, "utf8")
@ -1141,8 +1140,7 @@ def WebRequestResponseSend(inResponeStr, inRequest=None, inContentTypeStr: str =
def WebRequestGet(): 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() lCurrentThread = threading.current_thread()
if hasattr(lCurrentThread, "request"): if hasattr(lCurrentThread, "request"):
@ -1150,10 +1148,10 @@ def WebRequestGet():
def WebUserInfoGet(inRequest=None): def WebUserInfoGet(inRequest=None):
""" """
Return User info about request Информация о пользователе, который отправил HTTP запрос.
:param inRequest: inRequest from the server. Optional if call def from request thread :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:return: {"DomainUpperStr": "", "UserNameUpperStr": ""} :return: Сведения в формате {"DomainUpperStr": "PYOPENRPA", "UserNameUpperStr": "IVAN.MASLOV"}
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
lDomainUpperStr = inRequest.OpenRPA["Domain"].upper() lDomainUpperStr = inRequest.OpenRPA["Domain"].upper()
@ -1162,11 +1160,11 @@ def WebUserInfoGet(inRequest=None):
def WebUserIsSuperToken(inRequest = None, inGSettings = 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: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: bool True - is supertoken; False - is not supertoken :return: True - является супертокеном; False - не является супертокеном
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
@ -1177,10 +1175,10 @@ def WebUserIsSuperToken(inRequest = None, inGSettings = None):
def WebUserUACHierarchyGet(inRequest = 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 :param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:return: UAC Dict {} :return: UAC словарь доступа или {}, что означает полный доступ
""" """
if inRequest is None: inRequest = WebRequestGet() if inRequest is None: inRequest = WebRequestGet()
return inRequest.UserRoleHierarchyGet() return inRequest.UserRoleHierarchyGet()
@ -1200,10 +1198,10 @@ if __name__ == "pyOpenRPA.Orchestrator.__Orchestrator__" and "pyOpenRPA.Orchestr
def GSettingsGet(inGSettings=None): def GSettingsGet(inGSettings=None):
""" """
Get the GSettings from the singleton module. Вернуть глобальный словарь настроек Оркестратора. Во время выполнения программы глобальный словарь настроек существует в единственном экземпляре (синглтон)
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Дополнительный словарь настроек, который необходимо добавить в основной глобальный словарь настроек Оркестратора (синглтон)
:return: GSettings :return: Глобальный словарь настроек GSettings
""" """
global GSettings # identify the global variable global GSettings # identify the global variable
# Merge dictionaries if some new dictionary has come # Merge dictionaries if some new dictionary has come
@ -1213,12 +1211,13 @@ def GSettingsGet(inGSettings=None):
def GSettingsKeyListValueSet(inValue, inKeyList=None, 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 inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inValue: :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings
:param inKeyList: :param inKeyList: Список ключей, по адресу которого установить значение в GSettings
:return: bool
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if inKeyList is None: inKeyList = [] if inKeyList is None: inKeyList = []
@ -1235,11 +1234,11 @@ def GSettingsKeyListValueSet(inValue, inKeyList=None, inGSettings = None):
def GSettingsKeyListValueGet(inKeyList=None, inGSettings = None): def GSettingsKeyListValueGet(inKeyList=None, inGSettings = None):
""" """
Get the value from the GSettings by the key list Получить значение из глобального словаря настроек Оркестратора GSettings по списку ключей.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inKeyList: :param inKeyList: Список ключей, по адресу которого получить значение из GSettings
:return: value any type :return: Значение (тип данных определяется форматом хранения в GSettings)
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if inKeyList is None: inKeyList = [] if inKeyList is None: inKeyList = []
@ -1255,11 +1254,11 @@ def GSettingsKeyListValueGet(inKeyList=None, inGSettings = None):
def GSettingsKeyListValueAppend(inValue, 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 .. code-block:: python
# USAGE # ПРИМЕР
from pyOpenRPA import Orchestrator from pyOpenRPA import Orchestrator
Orchestrator.GSettingsKeyListValueAppend( Orchestrator.GSettingsKeyListValueAppend(
@ -1276,9 +1275,8 @@ def GSettingsKeyListValueAppend(inValue, inKeyList=None, inGSettings = None):
#} #}
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inValue: Any value to be appended in gSettings Dict by the key list :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings
:param inKeyList: List of the nested keys (see example) :param inKeyList: Список ключей, по адресу которого выполнить добавление в конец списка (list)
:return: True every time
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if inKeyList is None: inKeyList = [] if inKeyList is None: inKeyList = []
@ -1295,11 +1293,11 @@ def GSettingsKeyListValueAppend(inValue, inKeyList=None, inGSettings = None):
def GSettingsKeyListValueOperatorPlus(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 .. code-block:: python
# USAGE # ПРИМЕР
from pyOpenRPA import Orchestrator from pyOpenRPA import Orchestrator
Orchestrator.GSettingsKeyListValueOperatorPlus( Orchestrator.GSettingsKeyListValueOperatorPlus(
@ -1319,9 +1317,8 @@ def GSettingsKeyListValueOperatorPlus(inValue, inKeyList=None, inGSettings = Non
#} #}
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inValue: List with values to be merged with list in gSettings :param inValue: Значение для установки в глобальный словарь настроек Оркестратора GSettings
:param inKeyList: List of the nested keys (see example) :param inKeyList: Список ключей, по адресу которого выполнить добавление в конец списка (list)
:return: True every time
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if inKeyList is None: inKeyList = [] if inKeyList is None: inKeyList = []
@ -1338,19 +1335,19 @@ def GSettingsKeyListValueOperatorPlus(inValue, inKeyList=None, inGSettings = Non
def StorageRobotExists(inRobotNameStr): def StorageRobotExists(inRobotNameStr):
""" """
Check if robot storage exists Проверить, существует ли ключ inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings > StarageDict)
:param inRobotNameStr: Robot name (case sensitive) :param inRobotNameStr: Наименование (ключ) робота. !ВНИМАНИЕ! Наименование чувствительно к регистру
:return: True - robot storage exist; False - does not exist :return: True - ключ робота присутствует в хранилище; False - отсутствует
""" """
return inRobotNameStr in GSettingsGet()["StorageDict"] return inRobotNameStr in GSettingsGet()["StorageDict"]
def StorageRobotGet(inRobotNameStr): 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) :param inRobotNameStr: Наименование (ключ) робота. !ВНИМАНИЕ! Наименование чувствительно к регистру
:return: Dict :return: Значение или структура, которая расположена по адресу (GSettings > StarageDict > inRobotNameStr)
""" """
if inRobotNameStr not in GSettingsGet()["StorageDict"]: if inRobotNameStr not in GSettingsGet()["StorageDict"]:
GSettingsGet()["StorageDict"][inRobotNameStr]={} GSettingsGet()["StorageDict"][inRobotNameStr]={}
@ -1358,9 +1355,9 @@ def StorageRobotGet(inRobotNameStr):
def ProcessorAliasDefCreate(inDef, inAliasStr=None, inGSettings = None): 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 .. code-block:: python
@ -1375,18 +1372,19 @@ def ProcessorAliasDefCreate(inDef, inAliasStr=None, inGSettings = None):
inAliasStr="TestDefAlias") inAliasStr="TestDefAlias")
# Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr) # 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 inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inDef: Def :return: Строковый ключ, который был назначен. Ключ может быть изменен, если входящий текстовый ключ был уже занят.
:param inAliasStr: String alias for associated def
:return: str Alias string (Alias can be regenerated if previous alias was occupied)
""" """
return ActivityItemDefAliasCreate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings) return ActivityItemDefAliasCreate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings)
def ProcessorAliasDefUpdate(inDef, inAliasStr, inGSettings = None): 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 .. 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") # Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "TestDefAlias")
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inDef: Def :param inDef: функция Python
:param inAliasStr: String alias for associated def :param inAliasStr: Строковый ключ (синоним), который можно будет использовать в Активности (ActivityItem)
:return: str Alias string :return: Строковый ключ, который был назначен. Ключ будет тем же, если входящий текстовый ключ был уже занят.
""" """
return ActivityItemDefAliasUpdate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings) return ActivityItemDefAliasUpdate(inDef=inDef, inAliasStr=inAliasStr, inGSettings = inGSettings)
# ActivityItem defs # ActivityItem defs
def ActivityItemHelperDefList(inDefQueryStr=None): 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: :param inDefStr: Часть текстового ключ (начало / середина / конец)
:return: ["ActivityItemDefAliasUpdate", "ActivityItemDefAliasCreate", etc...] :return: Список доступных ключей в формате: ["ActivityItemDefAliasUpdate", "ActivityItemDefAliasCreate", etc...]
""" """
lResultList = [] lResultList = []
if inDefQueryStr is not None: # do search alg if inDefQueryStr is not None: # do search alg
@ -1428,10 +1426,17 @@ def ActivityItemHelperDefList(inDefQueryStr=None):
def ActivityItemHelperDefAutofill(inDef): def ActivityItemHelperDefAutofill(inDef):
""" """
Detect def by the name and prepare the activity item dict with values. Анализ аргументов функции по синониму (текстовому ключу).
:param inDef: :param inDef: Часть текстового ключ (начало / середина / конец)
:return: :return: Преднастроенная структура активности (ActivityItem)
{
"Def": None,
"ArgList": [],
"ArgDict": {},
"ArgGSettingsStr": None,
"ArgLoggerStr": None
}
""" """
lResultDict = { lResultDict = {
"Def": None, "Def": None,
@ -1460,14 +1465,14 @@ def ActivityItemHelperDefAutofill(inDef):
def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None, inGUIDStr = None, inThreadBool = False): 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 .. code-block:: python
# USAGE # ПРИМЕР
from pyOpenRPA import Orchestrator from pyOpenRPA import Orchestrator
# EXAMPLE 1 # ВАРИАНТ 1
def TestDef(inArg1Str, inGSettings, inLogger): def TestDef(inArg1Str, inGSettings, inLogger):
pass pass
lActivityItem = Orchestrator.ActivityItemCreate( lActivityItem = Orchestrator.ActivityItemCreate(
@ -1485,7 +1490,7 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=
# "ArgLogger": "inLogger" # "ArgLogger": "inLogger"
# } # }
# EXAMPLE 2 # ВАРИАНТ 2
def TestDef(inArg1Str): def TestDef(inArg1Str):
pass pass
Orchestrator.ActivityItemDefAliasUpdate( Orchestrator.ActivityItemDefAliasUpdate(
@ -1507,14 +1512,23 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=
# "ArgLogger": None # "ArgLogger": None
# } # }
:param inDef: def link or def alias (look gSettings["Processor"]["AliasDefDict"]) :param inDef: Функция Python или синоним (текстовый ключ)
:param inArgList: Args list for the Def :param inArgList: Список (list) неименованных аргументов к функции
:param inArgDict: Args dict for the def :param inArgDict: Словарь (dict) именованных аргументов к функции
:param inArgGSettingsStr: Name of def argument of the GSettings dict :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать)
:param inArgLoggerStr: Name of def argument of the logging object :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать)
:param inGUIDStr: GUID which you can specify. If None the GUID will be generated :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически
:param inThreadBool: True - execute ActivityItem in new thread; False - in processor thread :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди
:return: {} :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 # Work about GUID in Activity items
if inGUIDStr is None: if inGUIDStr is None:
@ -1535,12 +1549,11 @@ def ActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSettingsStr=
def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = None): 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 .. code-block:: python
# USAGE # ПРИМЕР
from pyOpenRPA import Orchestrator from pyOpenRPA import Orchestrator
def TestDef(): def TestDef():
@ -1551,10 +1564,10 @@ def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = None):
inAliasStr="TestDefAlias") inAliasStr="TestDefAlias")
# Now you can call TestDef by the alias from var lAliasStr with help of ActivityItem (key Def = lAliasStr) # 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 inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inDef: Def :return: Строковый ключ, который был назначен. Ключ может быть изменен, если входящий текстовый ключ был уже занят.
: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! #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 inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
@ -1569,9 +1582,7 @@ def ActivityItemDefAliasCreate(inDef, inAliasStr=None, inGSettings = None):
def ActivityItemDefAliasModulesLoad(): def ActivityItemDefAliasModulesLoad():
""" """
Load all def from sys.modules... in ActivityItem def alias dict Загрузить все функции из импортированных модулей sys.modules в ActivityItem синонимы - полезно для отладки со стороны панели управления.
:return: None
""" """
lL = OrchestratorLoggerGet() lL = OrchestratorLoggerGet()
lL.info(f"ActivityItem aliases: start to load sys.modules") lL.info(f"ActivityItem aliases: start to load sys.modules")
@ -1589,9 +1600,8 @@ def ActivityItemDefAliasModulesLoad():
def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None): 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 .. code-block:: python
# USAGE # USAGE
@ -1605,10 +1615,10 @@ def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None):
inAliasStr="TestDefAlias") inAliasStr="TestDefAlias")
# Now you can call TestDef by the alias "TestDefAlias" with help of ActivityItem (key Def = "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 inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inDef: Def :return: Строковый ключ, который был назначен. Ключ будет тем же, если входящий текстовый ключ был уже занят.
:param inAliasStr: String alias for associated def
:return: str Alias string
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if callable(inDef): inGSettings["ProcessorDict"]["AliasDefDict"][inAliasStr] = inDef 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): 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. Создать Активность (ActivityItem). Активность можно использовать в ProcessorActivityItemAppend или в Processor.ActivityListExecute или в функциях работы с Агентами.
Deprecated. See ActivityItemCreate
Старая версия. Новую версию см. в ActivityItemCreate
.. code-block:: python .. code-block:: python
# USAGE # ПРИМЕР
from pyOpenRPA import Orchestrator from pyOpenRPA import Orchestrator
# EXAMPLE 1 # ВАРИАНТ 1
def TestDef(inArg1Str, inGSettings, inLogger): def TestDef(inArg1Str, inGSettings, inLogger):
pass pass
lActivityItem = Orchestrator.ProcessorActivityItemCreate( lActivityItem = Orchestrator.ProcessorActivityItemCreate(
@ -1644,7 +1656,7 @@ def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSet
# "ArgLogger": "inLogger" # "ArgLogger": "inLogger"
# } # }
# EXAMPLE 2 # ВАРИАНТ 2
def TestDef(inArg1Str): def TestDef(inArg1Str):
pass pass
Orchestrator.ProcessorAliasDefUpdate( Orchestrator.ProcessorAliasDefUpdate(
@ -1666,22 +1678,31 @@ def ProcessorActivityItemCreate(inDef, inArgList=None, inArgDict=None, inArgGSet
# "ArgLogger": None # "ArgLogger": None
# } # }
:param inDef: def link or def alias (look gSettings["Processor"]["AliasDefDict"]) :param inDef: Функция Python или синоним (текстовый ключ)
:param inArgList: Args list for the Def :param inArgList: Список (list) неименованных аргументов к функции
:param inArgDict: Args dict for the def :param inArgDict: Словарь (dict) именованных аргументов к функции
:param inArgGSettingsStr: Name of def argument of the GSettings dict :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать)
:param inArgLoggerStr: Name of def argument of the logging object :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать)
:param inGUIDStr: GUID which you can specify. If None the GUID will be generated :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически
:param inThreadBool: True - execute ActivityItem in new thread; False - in processor thread :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди
:return: {} :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, return ActivityItemCreate(inDef=inDef, inArgList=inArgList, inArgDict=inArgDict, inArgGSettingsStr=inArgGSettingsStr, inArgLoggerStr=inArgLoggerStr,
inGUIDStr=inGUIDStr, inThreadBool=inThreadBool) inGUIDStr=inGUIDStr, inThreadBool=inThreadBool)
def ProcessorActivityItemAppend(inGSettings = None, inDef=None, inArgList=None, inArgDict=None, inArgGSettingsStr=None, inArgLoggerStr=None, inActivityItemDict=None): 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 .. code-block:: python
# USAGE # USAGE
@ -1718,13 +1739,15 @@ def ProcessorActivityItemAppend(inGSettings = None, inDef=None, inArgList=None,
# Activity have been already append in the processor queue # Activity have been already append in the processor queue
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inDef: def link or def alias (look gSettings["Processor"]["AliasDefDict"]) :param inDef: Функция Python или синоним (текстовый ключ)
:param inArgList: Args list for the Def :param inArgList: Список (list) неименованных аргументов к функции
:param inArgDict: Args dict for the Def :param inArgDict: Словарь (dict) именованных аргументов к функции
:param inArgGSettingsStr: Name of def argument of the GSettings dict :param inArgGSettingsStr: Текстовое наименование аргумента GSettings (если требуется передавать)
:param inArgLoggerStr: Name of def argument of the logging object :param inArgLoggerStr: Текстовое наименование аргумента logger (если требуется передавать)
:param inActivityItemDict: Fill if you already have ActivityItemDict (don't fill inDef, inArgList, inArgDict, inArgGSettingsStr, inArgLoggerStr) :param inGUIDStr: ГУИД идентификатор активности (ActivityItem). Если ГУИД не указан, то он будет сгенерирован автоматически
:return ActivityItem GUIDStr :param inThreadBool: True - выполнить ActivityItem в новом потоке; False - выполнить последовательно в общем потоке процессорной очереди
:param inActivityItemDict: Альтернативный вариант заполнения, если уже имеется Активность (ActivityItem). В таком случае не требуется заполнять аргументы inDef, inArgList, inArgDict, inArgGSettingsStr, inArgLoggerStr
:return ГУИД активности (ActivityItem)
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
if inActivityItemDict is None: if inActivityItemDict is None:

Loading…
Cancel
Save