logs eng to rus

dev-linux
robo-bo 2 years ago
parent 53eae37b57
commit 04ec23bbc5

@ -116,7 +116,7 @@ if __name__ == "__main__":
## # # # # # # # # # # # # # # # # ## ## # # # # # # # # # # # # # # # # ##
# START ROBOT # START ROBOT
lL.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #") lL.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #")
lL.info("ROBOT NAME ITERATION START") lL.info("ИМЯ РОБОТА, НАЧАЛО ВЫПОЛНЕНИЯ")
lL.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #") lL.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #")
lL.info(f"VM host name: {gVMHostNameStr}, Program version {gVersionStr}, Working directory: {gCWDAbsPathStr}") # Init info lL.info(f"ХОСТ: {gVMHostNameStr}, ВЕРСИЯ РОБОТА: {gVersionStr}, РАБОЧАЯ ДИРЕКТОРИЯ: {gCWDAbsPathStr}") # Init info
pyModule.pyModule(inGSettings = gSettings) # Execute main def in Source/pyPackage.pyModule.pyModule pyModule.pyModule(inGSettings = gSettings) # Execute main def in Source/pyPackage.pyModule.pyModule

@ -53,27 +53,27 @@ def O2A_Loop(inGSettings):
# Log full version if bytes size is less than limit . else short # Log full version if bytes size is less than limit . else short
lAgentLimitLogSizeBytesInt = 500 lAgentLimitLogSizeBytesInt = 500
if lBodyLenInt <= lAgentLimitLogSizeBytesInt: if lBodyLenInt <= lAgentLimitLogSizeBytesInt:
if lL: lL.info(f"ActivityItem from orchestrator: {lQueueItem}"); if lL: lL.info(f"Словарь ActivityItem, полученный от оркестратора: {lQueueItem}")
else: else:
if lL: lL.info(f"ActivityItem from orchestrator: Supressed - big size. Size is {lBodyLenInt} bytes"); if lL: lL.info(f"Словарь ActivityItem, полученный от оркестратора: содержимое свернуто из-за большого размера ({lBodyLenInt} байт")
else: else:
if lL: lL.debug(f"Empty response from the orchestrator - loop when refresh the connection between Orc and Agent"); if lL: lL.debug(f"Поступил пустой ответ от оркестратора - цикл попытается обновить соединение между оркестратором и агентом");
except requests.exceptions.ConnectionError as e: except requests.exceptions.ConnectionError as e:
if time.time() - lCEPhaseFastTimeLastGoodFloat <= lCEPhaseFastDurationSecFloat: if time.time() - lCEPhaseFastTimeLastGoodFloat <= lCEPhaseFastDurationSecFloat:
if lL: lL.error(f"O2A Connection error - orchestrator is not available. Sleep for {lCEPhaseFastRetrySecFloat} s.") if lL: lL.error(f"О2А Ошибка соединения - оркестратор недоступен. Повторить попытку через {lCEPhaseFastRetrySecFloat} с.")
time.sleep(lCEPhaseFastRetrySecFloat) time.sleep(lCEPhaseFastRetrySecFloat)
else: else:
if lL: lL.error(f"O2A Connection error - orchestrator is not available. Sleep for {lCEPhaseLongRetrySecFloat} s.") if lL: lL.error(f"О2А Ошибка соединения - оркестратор недоступен. Повторить попытку через {lCEPhaseLongRetrySecFloat} с.")
time.sleep(lCEPhaseLongRetrySecFloat) time.sleep(lCEPhaseLongRetrySecFloat)
except ConnectionResetError as e: except ConnectionResetError as e:
if lL: lL.error(f"O2A Connection reset error - orchestrator is not available. Sleep for {inGSettings['O2ADict']['RetryTimeoutSecFloat']} s.") if lL: lL.error(f"О2А Ошибка сброса соединения - оркестратор недоступен. Повторить попытку через {inGSettings['O2ADict']['RetryTimeoutSecFloat']} с.")
time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"]) time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"])
except json.decoder.JSONDecodeError as e: except json.decoder.JSONDecodeError as e:
if lL: lL.error(f"O2A JSON decode error - See body of the recieved content from the Orchestrator: {lRequestBody}") if lL: lL.error(f"О2А Ошибка декодирования JSON - далее представлено содержимое, которое поступило на обработку: {lRequestBody}")
time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"]) time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"])
except requests.exceptions.Timeout as e: except requests.exceptions.Timeout as e:
if lL: lL.exception(f"O2A requests timeout error (no response for long time). Sleep for {inGSettings['O2ADict']['RetryTimeoutSecFloat']} s.") if lL: lL.exception(f"О2А Ошибка соединения (превышено время ожидания). Повторить попытку через {inGSettings['O2ADict']['RetryTimeoutSecFloat']} с.")
time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"]) time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"])
except Exception as e: except Exception as e:
if lL: lL.exception(f"O2A Error handler. Sleep for {inGSettings['O2ADict']['RetryTimeoutSecFloat']} s.") if lL: lL.exception(f"О2А Общая ошибка. Повторить попытку через {inGSettings['O2ADict']['RetryTimeoutSecFloat']} с.")
time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"]) time.sleep(inGSettings["O2ADict"]["RetryTimeoutSecFloat"])

@ -21,7 +21,7 @@ def OSFileBinaryDataBase64StrCreate(inFilePathStr, inFileDataBase64Str,inGSettin
lFile.write(base64.b64decode(inFileDataBase64Str)) lFile.write(base64.b64decode(inFileDataBase64Str))
lFile.close() lFile.close()
lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None
lMessageStr = f"AGENT Binary file {inFilePathStr} has been created." lMessageStr = f"АГЕНТ: бинарный файл {inFilePathStr} создан успешно"
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr]) A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr])
@ -35,7 +35,7 @@ def OSFileBinaryDataBase64StrAppend(inFilePathStr, inFileDataBase64Str,inGSettin
lFile.write(base64.b64decode(inFileDataBase64Str)) lFile.write(base64.b64decode(inFileDataBase64Str))
lFile.close() lFile.close()
lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None
lMessageStr = f"AGENT Binary file {inFilePathStr} has been appended." lMessageStr = f"АГЕНТ: Данные успешно добавлены в бинарный файл {inFilePathStr}"
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr]) A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr])
@ -54,7 +54,7 @@ def OSFileTextDataStrCreate(inFilePathStr, inFileDataStr, inEncodingStr = "utf-8
lFile.write(inFileDataStr) lFile.write(inFileDataStr)
lFile.close() lFile.close()
lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None lL = inGSettings.get("Logger", None) if type(inGSettings) is dict else None
lMessageStr = f"AGENT Text file {inFilePathStr} has been created." lMessageStr = f"АГЕНТ: Текстовый файл {inFilePathStr} успешно создан"
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr]) A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr])
@ -112,11 +112,11 @@ def OSFileTextDataStrReceive(inFilePathStr, inEncodingStr="utf-8", inGSettings=N
lFile = open(inFilePathStr, "r", encoding=inEncodingStr) lFile = open(inFilePathStr, "r", encoding=inEncodingStr)
lFileDataStr = lFile.read() lFileDataStr = lFile.read()
lFile.close() lFile.close()
lMessageStr = f"OSFileTextDataStrReceive: file {inFilePathStr} has been read" lMessageStr = f"АГЕНТ: Текстовый файл {inFilePathStr} прочитан успешно"
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
#A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr]) #A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr])
else: else:
if lL: lL.info(f"OSFileTextDataStrReceive: file {inFilePathStr} is not exists - return None") if lL: lL.info(f"АГЕНТ: Текстовый файл {inFilePathStr} не существует - вернуть None")
return lFileDataStr return lFileDataStr
# Send CMD to OS. Result return to log + Orchestrator by the A2O connection # Send CMD to OS. Result return to log + Orchestrator by the A2O connection
@ -151,7 +151,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inGSettings = None, inSendOutputToOrche
if CrossOS.IS_LINUX_BOOL: if CrossOS.IS_LINUX_BOOL:
lCMDProcess = subprocess.Popen(f'cmd /c {inCMDStr}', stdout=None, stderr=None) lCMDProcess = subprocess.Popen(f'cmd /c {inCMDStr}', stdout=None, stderr=None)
lListenBool = True lListenBool = True
lMessageStr = f"{lOSCMDKeyStr}: # # # # AGENT CMD Process has been STARTED # # # # " lMessageStr = f"{lOSCMDKeyStr}: # # # # АГЕНТ: Терминальная сессия запущена # # # # "
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
if inSendOutputToOrchestratorLogsBool == True: # Capturing can be turned on! if inSendOutputToOrchestratorLogsBool == True: # Capturing can be turned on!
A2O.LogListSend(inGSettings=inGSettings,inLogList=[lMessageStr]) A2O.LogListSend(inGSettings=inGSettings,inLogList=[lMessageStr])
@ -178,7 +178,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inGSettings = None, inSendOutputToOrche
time.sleep(2) time.sleep(2)
else: else:
lListenBool = False lListenBool = False
lMessageStr = f"{lOSCMDKeyStr}: # # # # AGENT CMD Process has been FINISHED # # # # " lMessageStr = f"{lOSCMDKeyStr}: # # # # АГЕНТ: Терминальная сессия завершена # # # # "
if lL: lL.info(lMessageStr) if lL: lL.info(lMessageStr)
if inSendOutputToOrchestratorLogsBool == True: # Capturing can be turned on! if inSendOutputToOrchestratorLogsBool == True: # Capturing can be turned on!
A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr]) A2O.LogListSend(inGSettings=inGSettings, inLogList=[lMessageStr])
@ -187,7 +187,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inGSettings = None, inSendOutputToOrche
if inRunAsyncBool: if inRunAsyncBool:
lThread = threading.Thread(target=_CMDRunAndListenLogs, kwargs={"inCMDStr":inCMDStr, "inGSettings":inGSettings, "inSendOutputToOrchestratorLogsBool":inSendOutputToOrchestratorLogsBool, "inCMDEncodingStr":inCMDEncodingStr, "inCaptureBool": inCaptureBool }) lThread = threading.Thread(target=_CMDRunAndListenLogs, kwargs={"inCMDStr":inCMDStr, "inGSettings":inGSettings, "inSendOutputToOrchestratorLogsBool":inSendOutputToOrchestratorLogsBool, "inCMDEncodingStr":inCMDEncodingStr, "inCaptureBool": inCaptureBool })
lThread.start() lThread.start()
lResultStr="ActivityList has been started in async mode - no output is available here." lResultStr="Список ActivityList отправлен на исполнение в асинхронном режиме - захват текста недоступен"
else: else:
lResultStr = _CMDRunAndListenLogs(inCMDStr=inCMDStr, inGSettings=inGSettings, inSendOutputToOrchestratorLogsBool = inSendOutputToOrchestratorLogsBool, inCMDEncodingStr = inCMDEncodingStr, inCaptureBool=inCaptureBool) lResultStr = _CMDRunAndListenLogs(inCMDStr=inCMDStr, inGSettings=inGSettings, inSendOutputToOrchestratorLogsBool = inSendOutputToOrchestratorLogsBool, inCMDEncodingStr = inCMDEncodingStr, inCaptureBool=inCaptureBool)
#lCMDCode = "cmd /c " + inCMDStr #lCMDCode = "cmd /c " + inCMDStr
@ -244,7 +244,7 @@ def Agent(inGSettings):
lProcessorThread = threading.Thread(target= Processor.ProcessorRunSync, kwargs={"inGSettings":inGSettings}) lProcessorThread = threading.Thread(target= Processor.ProcessorRunSync, kwargs={"inGSettings":inGSettings})
lProcessorThread.daemon = True # Run the thread in daemon mode. lProcessorThread.daemon = True # Run the thread in daemon mode.
lProcessorThread.start() # Start the thread execution. lProcessorThread.start() # Start the thread execution.
if lL: lL.info("Processor has been started (ProcessorDict)") #Logging if lL: lL.info("Модуль процессора pyOpenRPA был успешно запущен") #Logging
# Start thread to wait data from Orchestrator (O2A) # Start thread to wait data from Orchestrator (O2A)
lO2AThread = threading.Thread(target=O2A.O2A_Loop, kwargs={"inGSettings":inGSettings}) lO2AThread = threading.Thread(target=O2A.O2A_Loop, kwargs={"inGSettings":inGSettings})

@ -77,7 +77,7 @@ def v1_2_0_Monitor_ControlPanelDictGet_SessionCheckInit(inRequest,inGlobalDict):
} }
inGlobalDict["Client"]["Session"]["TechnicalSessionGUIDCache"][lCookieSessionGUIDStr] = lSessionNew # Set new session in dict inGlobalDict["Client"]["Session"]["TechnicalSessionGUIDCache"][lCookieSessionGUIDStr] = lSessionNew # Set new session in dict
inRequest.OpenRPAResponseDict["SetCookies"]["SessionGUIDStr"] = lCookieSessionGUIDStr # Set SessionGUIDStr in cookies inRequest.OpenRPAResponseDict["SetCookies"]["SessionGUIDStr"] = lCookieSessionGUIDStr # Set SessionGUIDStr in cookies
if lL: lL.info(f"New session GUID is created. GUID {lCookieSessionGUIDStr}") if lL: lL.info(f"РДП сессия инициализирована. Идентификатор сессии:{lCookieSessionGUIDStr}")
return lCookieSessionGUIDStr return lCookieSessionGUIDStr
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
lCreateNewSessionBool = False # Flag to create new session structure lCreateNewSessionBool = False # Flag to create new session structure

@ -151,11 +151,11 @@ class Git():
:param inBranchRemoteStr: [description] :param inBranchRemoteStr: [description]
:type inBranchRemoteStr: str :type inBranchRemoteStr: str
""" """
Orchestrator.OrchestratorLoggerGet().debug(f"Managers.Git ({self.mAbsPathStr}): self.BranchRevLastGet has been init") Orchestrator.OrchestratorLoggerGet().debug(f"Модуль Managers.Git ({self.mAbsPathStr}): функция self.BranchRevLastGet успешно инициализирована")
# check if the correct revision # check if the correct revision
lCMDResultStr = None lCMDResultStr = None
if self.BranchRevIsLast(inBranchLocalStr=inBranchLocalStr, inBranchRemoteStr=inBranchRemoteStr) == False: if self.BranchRevIsLast(inBranchLocalStr=inBranchLocalStr, inBranchRemoteStr=inBranchRemoteStr) == False:
Orchestrator.OrchestratorLoggerGet().info(f"Managers.Git ({self.mAbsPathStr}): self.BranchRevLastGet, new rev (branch: {inBranchLocalStr}) has been detected - merge (branch: {inBranchRemoteStr})") Orchestrator.OrchestratorLoggerGet().info(f"Модуль Managers.Git ({self.mAbsPathStr}): функуция self.BranchRevLastGet, новая ревизия (ветка: {inBranchLocalStr}) была удалена - выполнить слияние (ветка на сервере: {inBranchRemoteStr})")
# Do the stop safe for the connected process # Do the stop safe for the connected process
self.ProcessListSaveStopSafe() self.ProcessListSaveStopSafe()
lBranchNameCurrentStr = self.BranchNameGet() lBranchNameCurrentStr = self.BranchNameGet()
@ -170,7 +170,7 @@ class Git():
# checkout to the source branch which was # checkout to the source branch which was
self.BranchCheckout(inBranchNameStr=lBranchNameCurrentStr) self.BranchCheckout(inBranchNameStr=lBranchNameCurrentStr)
# do the orc restart # do the orc restart
Orchestrator.OrchestratorLoggerGet().info(f"Managers.Git ({self.mAbsPathStr}): self.BranchRevLastGet, merge done, restart orc") Orchestrator.OrchestratorLoggerGet().info(f"Модуль Managers.Git ({self.mAbsPathStr}): self.BranchRevLastGet, merge done, restart orc")
Orchestrator.OrchestratorRestart() Orchestrator.OrchestratorRestart()
return lCMDResultStr return lCMDResultStr

@ -145,7 +145,7 @@ class Process():
self.mStatusStr = "1_STOPPED_MANUAL" self.mStatusStr = "1_STOPPED_MANUAL"
# Log info about process # Log info about process
lL = __Orchestrator__.OrchestratorLoggerGet() lL = __Orchestrator__.OrchestratorLoggerGet()
lL.info(f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): ManualStopTrigger is activated. {self.mMSTdNInt} start tries in {self.mMSTdTSecFloat} sec.") lL.info(f"Модуль Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Триггер ручной остановки активирован. {self.mMSTdNInt} повторить попытку через {self.mMSTdTSecFloat} сек.")
return self.mStatusStr return self.mStatusStr
def ManualStopListClear(self) -> None: def ManualStopListClear(self) -> None:
@ -180,7 +180,7 @@ class Process():
""" """
if inIsManualBool == False: self.ManualStopTriggerNewStart() # Set the time if inIsManualBool == False: self.ManualStopTriggerNewStart() # Set the time
if self.mStatusStr is not None and (self.mStatusStr == "1_STOPPED_MANUAL" or "STOP_SAFE" in self.mStatusStr) and inIsManualBool == False: if self.mStatusStr is not None and (self.mStatusStr == "1_STOPPED_MANUAL" or "STOP_SAFE" in self.mStatusStr) and inIsManualBool == False:
lStr = f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Process will not start because of stopped manual or stop safe is now." lStr = f"Модуль Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Процесс не будет запущен, так как инициализирован триггер ручной остановки или активен режим безопасного отключения"
__Orchestrator__.OrchestratorLoggerGet().warning(lStr) __Orchestrator__.OrchestratorLoggerGet().warning(lStr)
return self.mStatusStr return self.mStatusStr
# Send activity item to agent - wait result # Send activity item to agent - wait result
@ -259,7 +259,7 @@ class Process():
if "SAFE" in self.mStatusStr: if "SAFE" in self.mStatusStr:
# Log info about process # Log info about process
lL = __Orchestrator__.OrchestratorLoggerGet() lL = __Orchestrator__.OrchestratorLoggerGet()
lL.info(f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Safe stop has been wait for {inStopSafeTimeoutSecFloat} sec. Now do the force stop.") lL.info(f"Модуль Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Алгоритм безопасной остановки ожидал завершение процесса в течение {inStopSafeTimeoutSecFloat} сек. Выполнить принудительную остановку")
self.StopForce(inIsManualBool=inIsManualBool,inMuteIgnoreBool=True) self.StopForce(inIsManualBool=inIsManualBool,inMuteIgnoreBool=True)
# Log info about process # Log info about process
# self.StatusChangeLog() status check has already log status (see above) # self.StatusChangeLog() status check has already log status (see above)
@ -390,7 +390,7 @@ class Process():
""" """
# Log info about process # Log info about process
lL = __Orchestrator__.OrchestratorLoggerGet() lL = __Orchestrator__.OrchestratorLoggerGet()
lL.info(f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Status has been changed to {self.mStatusStr})") lL.info(f"Модуль Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Состояние процесса изменилось на {self.mStatusStr})")
def StatusCheck(self): def StatusCheck(self):

@ -70,7 +70,7 @@ def ActivityListExecute(inGSettings, inActivityList):
lResultList = [] # init the result list lResultList = [] # init the result list
try: try:
for lActivityItem in inActivityList: # Iterate throught the activity list for lActivityItem in inActivityList: # Iterate throught the activity list
if lL: lL.info(f'pyOpenRPA Processor.ActivityListExecute:: Def:{str(lActivityItem["Def"])}. Parameters are not available to see.') if lL: lL.info(f'Процессор:: Исполнение функции def:{str(lActivityItem["Def"])}. В целях информационной безопасности параметры недоступны для просмотра')
lDef = None # Def variable lDef = None # Def variable
if callable(lActivityItem["Def"]): # CHeck if def is callable if callable(lActivityItem["Def"]): # CHeck if def is callable
lDef = lActivityItem["Def"] # Get the def lDef = lActivityItem["Def"] # Get the def

@ -62,22 +62,22 @@ def RobotRDPActive(inGSettings, inThreadControlDict):
try: try:
Connector.Session(lRDPConfigurationDict, inScreenSize550x350Bool = True) Connector.Session(lRDPConfigurationDict, inScreenSize550x350Bool = True)
lRDPConfigurationDict["SessionIsWindowExistBool"] = True # Flag that session is started lRDPConfigurationDict["SessionIsWindowExistBool"] = True # Flag that session is started
if lL: lL.info(f"Host: {lRDPConfigurationDict['Host']}, Login: {lRDPConfigurationDict['Login']}, SessionHex: {str(lRDPConfigurationDict['SessionHex'])}:: Session has been initialized!") #Logging if lL: lL.info(f"Хост: {lRDPConfigurationDict['Host']}, Логин: {lRDPConfigurationDict['Login']}, Идентификатор сессии: {str(lRDPConfigurationDict['SessionHex'])}:: Сессия была инициализирована!") #Logging
# catch ConnectorExceptions.SessionWindowNotExistError # catch ConnectorExceptions.SessionWindowNotExistError
except ConnectorExceptions.SessionWindowNotExistError as e: except ConnectorExceptions.SessionWindowNotExistError as e:
lRDPConfigurationDict["SessionIsWindowExistBool"] = False # Set flag that session is disconnected lRDPConfigurationDict["SessionIsWindowExistBool"] = False # Set flag that session is disconnected
if lL: lL.warning(f"Host: {lRDPConfigurationDict['Host']}, Login: {lRDPConfigurationDict['Login']}, SessionHex: {str(lRDPConfigurationDict['SessionHex'])}:: Session is not exist! Mark the retry") #Logging if lL: lL.warning(f"Хост: {lRDPConfigurationDict['Host']}, Логин: {lRDPConfigurationDict['Login']}, Идентификатор сессии: {str(lRDPConfigurationDict['SessionHex'])}:: Сессия не обнаружена - попытаться подключиться!") #Logging
# Recovery operations # Recovery operations
Recovery.RetryMark(inRDPSessionKeyStr=lRDPSessionKeyStr,inGSettings=inGSettings) Recovery.RetryMark(inRDPSessionKeyStr=lRDPSessionKeyStr,inGSettings=inGSettings)
if Recovery.RetryIsTriggered(inRDPSessionKeyStr=lRDPSessionKeyStr,inGSettings=inGSettings) == True: if Recovery.RetryIsTriggered(inRDPSessionKeyStr=lRDPSessionKeyStr,inGSettings=inGSettings) == True:
if lL: lL.warning(f"!ATTENTION! Host: {lRDPConfigurationDict['Host']}, Login: {lRDPConfigurationDict['Login']}; RDP is not responsible for many times - run recovery mode") if lL: lL.warning(f"!ВНИМАНИЕ! Хост: {lRDPConfigurationDict['Host']}, Логин: {lRDPConfigurationDict['Login']}; сессия РДП недоступна при попытках подключения - инициализация режима восстановления")
Recovery.RetryHostClear(inHostStr=lRDPConfigurationDict['Host'],inGSettings=inGSettings) # Clear the stat about current host Recovery.RetryHostClear(inHostStr=lRDPConfigurationDict['Host'],inGSettings=inGSettings) # Clear the stat about current host
if inGSettings["RobotRDPActive"]["RecoveryDict"]["DoDict"]["OSRemotePCRestart"] == True: if inGSettings["RobotRDPActive"]["RecoveryDict"]["DoDict"]["OSRemotePCRestart"] == True:
if lL: lL.warning(f"!ATTENTION! Host: {lRDPConfigurationDict['Host']}, Send signal to restart remote PC.") if lL: lL.warning(f"!ВНИМАНИЕ! Хост: {lRDPConfigurationDict['Host']}, отправить сигнал на перезагрузку удаленной машины")
__Orchestrator__.OSRemotePCRestart(inLogger=lL,inHostStr=lRDPConfigurationDict['Host'],inForceBool=True) __Orchestrator__.OSRemotePCRestart(inLogger=lL,inHostStr=lRDPConfigurationDict['Host'],inForceBool=True)
# general exceptions # general exceptions
except Exception as e: except Exception as e:
if lL: lL.exception(f"!!! ATTENTION !!! Unrecognized error") #Logging if lL: lL.exception(f"!!! ВНИМАНИЕ !!! Неопознанная ошибка. Обратитесь в тех. поддержку pyOpenRPA") #Logging
pass pass
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Connector.SystemRDPWarningClickOk() # Click all warning messages Connector.SystemRDPWarningClickOk() # Click all warning messages
@ -125,7 +125,7 @@ def RobotRDPActive(inGSettings, inThreadControlDict):
lActivityItemResult = getattr(Processor, lSubmoduleFunctionName)( lActivityItemResult = getattr(Processor, lSubmoduleFunctionName)(
*lActivityItem["ArgList"], **lActivityItem["ArgDict"]) *lActivityItem["ArgList"], **lActivityItem["ArgDict"])
except Exception as e: except Exception as e:
if lL: lL.exception(f"RDP::main: Exception when run def in processor.py - activity will be ignored. Activity item: {lActivityItem}") #Logging if lL: lL.exception(f"РДП: Ошибка при обработке активности в процессоре РДП сессии - активность будет проигнорирована. Активность: {lActivityItem}") #Logging
lActivityItemResult = True # True - clear from repeat list lActivityItemResult = True # True - clear from repeat list
lActivityItemResultType = type(lActivityItemResult) lActivityItemResultType = type(lActivityItemResult)
# Check if Result is bool # Check if Result is bool
@ -137,7 +137,7 @@ def RobotRDPActive(inGSettings, inThreadControlDict):
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
except RuntimeError as e: except RuntimeError as e:
# case noGUI error passed - do nothing # case noGUI error passed - do nothing
if lL: lL.warning(f"Host session has lost the GUI") #Logging if lL: lL.warning(f"Оркестратор потерял графическую сессию - повторить попытку через несколько секунд") #Logging
finally: finally:
# Wait for the next iteration # Wait for the next iteration
time.sleep(0.7) time.sleep(0.7)
@ -145,4 +145,4 @@ def RobotRDPActive(inGSettings, inThreadControlDict):
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#Monitor.Monitor(mGSettingsRDPActiveDict, 1) #Monitor.Monitor(mGSettingsRDPActiveDict, 1)
except Exception as e: except Exception as e:
if lL: lL.exception(f"!!! ATTENTION !!! Global error handler - look at code") #Logging if lL: lL.exception(f"!!! ВНИМАНИ !!! В модуле РДП произошла критическая ошибка. Обратитесь в службу тех. поддержки pyOpenRPA") #Logging

@ -595,7 +595,7 @@ class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
lActivityTypeListStr += f"{lInputObject['Type']}" lActivityTypeListStr += f"{lInputObject['Type']}"
except Exception as e: except Exception as e:
lActivityTypeListStr = "Has some error with Activity Type read" lActivityTypeListStr = "Has some error with Activity Type read"
if lL: lL.info(f"Server:: !ATTENTION! /Utils/Processor will be deprecated in future. Use /pyOpenRPA/Processor or /pyOpenRPA/ActivityListExecute. User activity from web. Domain: {self.OpenRPA['Domain']}, Username: {self.OpenRPA['User']}, ActivityType: {lActivityTypeListStr}") if lL: lL.info(f"Сервер:: !ВНИМАНИЕ! /Utils/Processor через некоторое время перестанет поддерживаться. Используйте /pyOpenRPA/Processor или /pyOpenRPA/ActivityListExecute. Активность поступила от пользователя. Домен: {self.OpenRPA['Domain']}, Логин: {self.OpenRPA['User']}, Тип активности: {lActivityTypeListStr}")
# Send message back to client # Send message back to client
message = json.dumps(ProcessorOld.ActivityListOrDict(lInputObject)) message = json.dumps(ProcessorOld.ActivityListOrDict(lInputObject))
# Write content as utf-8 data # Write content as utf-8 data
@ -652,10 +652,10 @@ class RobotDaemonServer(Thread):
httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=lCertFilePathStr, keyfile=lKeyFilePathStr) httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=lCertFilePathStr, keyfile=lKeyFilePathStr)
else: else:
httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=lCertFilePathStr) httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=lCertFilePathStr)
if lL: lL.info(f"Web Server init (with SSL). Name: {self.name}, Listen URL: {lAddressStr}, Listen port: {lPortInt}, Cert path: {lCertFilePathStr}") if lL: lL.info(f"Сервер инициализирован успешно (с поддержкой SSL):: Наименование: {self.name}, Слушает URL: {lAddressStr}, Слушает порт: {lPortInt}, Путь к файлу сертификата (.pem): {lCertFilePathStr}")
else: else:
if lL: lL.info(f"Web Server init. Name: {self.name}, Listen URL: {lAddressStr}, Listen port: {lPortInt}") if lL: lL.info(f"Сервер инициализирован успешно (без поддержки SSL):: Наименование: {self.name}, Слушает URL: {lAddressStr}, Слушает порт: {lPortInt}")
#print('Starting server, use <Ctrl-C> to stop') #print('Starting server, use <Ctrl-C> to stop')
httpd.serve_forever() httpd.serve_forever()
except Exception as e: except Exception as e:
if lL: lL.exception(f"Web Server execution exception") if lL: lL.exception(f"Сервер:: Ошибка при инициализации - обратитесь в тех. поддержку pyOpenRPA")

@ -239,7 +239,7 @@ def pyOpenRPA_Processor(inRequest, inGSettings):
for lActivityItem in lInput: for lActivityItem in lInput:
lActivityTypeListStr += f"{lActivityItem['Def']}; " lActivityTypeListStr += f"{lActivityItem['Def']}; "
except Exception as e: except Exception as e:
lActivityTypeListStr = "Has some error with Activity Type read" lActivityTypeListStr = "Ошибка чтения типа активности"
lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_Processor") lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_Processor")
if lL: lL.info(lWebAuditMessageStr) if lL: lL.info(lWebAuditMessageStr)
# Separate into 2 lists - sync and async # Separate into 2 lists - sync and async
@ -265,7 +265,7 @@ def pyOpenRPA_Processor(inRequest, inGSettings):
try: try:
lActivityTypeListStr = lInput['Def'] lActivityTypeListStr = lInput['Def']
except Exception as e: except Exception as e:
lActivityTypeListStr = "Has some error with Activity Type read" lActivityTypeListStr = "Ошибка чтения типа активности"
lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_Processor") lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_Processor")
if lL: lL.info(lWebAuditMessageStr) if lL: lL.info(lWebAuditMessageStr)
if lInput.get("ThreadBool",False) == False: if lInput.get("ThreadBool",False) == False:
@ -294,7 +294,7 @@ def pyOpenRPA_ActivityListExecute(inRequest, inGSettings):
for lActivityItem in lInput: for lActivityItem in lInput:
lActivityTypeListStr += f"{lActivityItem['Def']}; " lActivityTypeListStr += f"{lActivityItem['Def']}; "
except Exception as e: except Exception as e:
lActivityTypeListStr = "Has some error with Activity Type read" lActivityTypeListStr = "Ошибка чтения типа активности"
lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_ActivityListExecute") lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,inOperationCodeStr=lActivityTypeListStr, inMessageStr="pyOpenRPA_ActivityListExecute")
if lL: lL.info(lWebAuditMessageStr) if lL: lL.info(lWebAuditMessageStr)
# Execution # Execution
@ -307,7 +307,7 @@ def pyOpenRPA_ActivityListExecute(inRequest, inGSettings):
try: try:
lActivityTypeListStr = lInput['Def'] lActivityTypeListStr = lInput['Def']
except Exception as e: except Exception as e:
lActivityTypeListStr = "Has some error with Activity Type read" lActivityTypeListStr = "Ошибка чтения типа активности"
lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest, lWebAuditMessageStr = __Orchestrator__.WebAuditMessageCreate(inRequest=inRequest,
inOperationCodeStr=lActivityTypeListStr, inOperationCodeStr=lActivityTypeListStr,
inMessageStr="pyOpenRPA_ActivityListExecute") inMessageStr="pyOpenRPA_ActivityListExecute")
@ -438,13 +438,13 @@ def pyOpenRPA_Agent_A2O(inRequest, inGSettings):
lActivityReturnItemValue = lInput["ActivityReturnDict"][lActivityReturnItemKeyStr] lActivityReturnItemValue = lInput["ActivityReturnDict"][lActivityReturnItemKeyStr]
# Create item in gSettings # Create item in gSettings
inGSettings["AgentActivityReturnDict"][lActivityReturnItemKeyStr]=SettingsTemplate.__AgentActivityReturnDictItemCreate__(inReturn=lActivityReturnItemValue) inGSettings["AgentActivityReturnDict"][lActivityReturnItemKeyStr]=SettingsTemplate.__AgentActivityReturnDictItemCreate__(inReturn=lActivityReturnItemValue)
lLogStr = "x bytes" lLogStr = "x байт"
try: try:
if lActivityReturnItemValue is not None: if lActivityReturnItemValue is not None:
lLogStr = f"{len(lActivityReturnItemValue)} bytes" lLogStr = f"{len(lActivityReturnItemValue)} байт"
except Exception as e: except Exception as e:
pass pass
if lL: lL.debug(f"SERVER: pyOpenRPA_Agent_A2O:: Has recieved result of the activity items from agent! ActivityItem GUID Str: {lActivityReturnItemKeyStr}; Return value len: {lLogStr}") if lL: lL.debug(f"СЕРВЕР: Функция pyOpenRPA_Agent_A2O:: Получена активность от агента! Идентификатор активности: {lActivityReturnItemKeyStr}; Длина переданной активности: {lLogStr}")
# Delete the source activity item from AgentDict # Delete the source activity item from AgentDict
if lAgentDictItemKeyTurple in inGSettings["AgentDict"]: if lAgentDictItemKeyTurple in inGSettings["AgentDict"]:
lAgentDictActivityListNew = [] lAgentDictActivityListNew = []
@ -454,7 +454,7 @@ def pyOpenRPA_Agent_A2O(inRequest, inGSettings):
lAgentDictActivityListNew.append(lActivityItem) lAgentDictActivityListNew.append(lActivityItem)
else: else:
del lActivityItem del lActivityItem
if lL: lL.debug(f"SERVER: pyOpenRPA_Agent_A2O:: Source activity item request was deleted from the orchestrator. ActivityItem GUID Str: {lActivityReturnItemKeyStr}") if lL: lL.debug(f"СЕРВЕР: Функция pyOpenRPA_Agent_A2O:: Активность была удалена из процессорной очереди. Идентификатор активности: {lActivityReturnItemKeyStr}")
inGSettings["AgentDict"][lAgentDictItemKeyTurple]["ActivityList"] = lAgentDictActivityListNew inGSettings["AgentDict"][lAgentDictItemKeyTurple]["ActivityList"] = lAgentDictActivityListNew
from pyOpenRPA.Utils.Render import Render from pyOpenRPA.Utils.Render import Render

@ -220,7 +220,7 @@ def AgentOSFileSend(inHostNameStr, inUserStr, inOrchestratorFilePathStr, inAgent
#import pdb #import pdb
#pdb.set_trace() #pdb.set_trace()
lChunkCountInt = math.ceil(lFileSizeBytesInt/lChunkByteSizeInt) lChunkCountInt = math.ceil(lFileSizeBytesInt/lChunkByteSizeInt)
if lL: lL.info(f"O2A: Start to send binary file via chunks. Chunk count: {lChunkCountInt}, From (Orch side): {inOrchestratorFilePathStr}, To (Agent side): {inAgentFilePathStr}") if lL: lL.info(f"О2А: Старт передачи крупного бинарного файла по частям. Общее количество частей: {lChunkCountInt}, от (сторона оркестратора): {inOrchestratorFilePathStr}, на (сторона агента): {inAgentFilePathStr}")
for lChunkNumberInt in range(lChunkCountInt): for lChunkNumberInt in range(lChunkCountInt):
# Read chunk # Read chunk
lFileChunkBytes = lFile.read(lChunkByteSizeInt) lFileChunkBytes = lFile.read(lChunkByteSizeInt)
@ -239,9 +239,9 @@ def AgentOSFileSend(inHostNameStr, inUserStr, inOrchestratorFilePathStr, inAgent
while AgentActivityItemExists(inGSettings=inGSettings,inHostNameStr=inHostNameStr,inUserStr=inUserStr,inGUIDStr=lActivityItemGUIDStr): while AgentActivityItemExists(inGSettings=inGSettings,inHostNameStr=inHostNameStr,inUserStr=inUserStr,inGUIDStr=lActivityItemGUIDStr):
time.sleep(lActivityItemCheckIntervalSecFloat) time.sleep(lActivityItemCheckIntervalSecFloat)
if lL: lL.debug( if lL: lL.debug(
f"O2A: BINARY SEND: Current chunk index: {lChunkNumberInt}") f"О2А: БИНАРНАЯ ОТПРАВКА: Номер текущей части: {lChunkNumberInt}")
if lL: lL.info( if lL: lL.info(
f"O2A: BINARY SEND: Transmition has been complete") f"О2А: БИНАРНАЯ ОТПРАВКА: Отправка завершена успешно")
# Close the file # Close the file
lFile.close() lFile.close()
@ -536,7 +536,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
if CrossOS.IS_LINUX_BOOL: lCMDProcess = subprocess.Popen(f'cmd /c {inCMDStr}', stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if CrossOS.IS_LINUX_BOOL: lCMDProcess = subprocess.Popen(f'cmd /c {inCMDStr}', stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if inLogger: if inLogger:
lListenBool = True lListenBool = True
inLogger.info(f"{lOSCMDKeyStr}: # # # # CMD Process has been STARTED # # # # ") inLogger.info(f"{lOSCMDKeyStr}: # # # # Терминальная сессия запущена успешно # # # # ")
inLogger.info(f"{lOSCMDKeyStr}: {inCMDStr}") inLogger.info(f"{lOSCMDKeyStr}: {inCMDStr}")
while lListenBool: while lListenBool:
lOutputLineBytes = lCMDProcess.stdout.readline() lOutputLineBytes = lCMDProcess.stdout.readline()
@ -546,13 +546,13 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
if lStr.endswith("\n"): lStr = lStr[:-1] if lStr.endswith("\n"): lStr = lStr[:-1]
inLogger.info(f"{lOSCMDKeyStr}: {lStr}") inLogger.info(f"{lOSCMDKeyStr}: {lStr}")
lResultStr+=lStr lResultStr+=lStr
inLogger.info(f"{lOSCMDKeyStr}: # # # # CMD Process has been FINISHED # # # # ") inLogger.info(f"{lOSCMDKeyStr}: # # # # Терминальная сессия завершена успешно # # # # ")
return lResultStr return lResultStr
# New call # New call
if inRunAsyncBool: if inRunAsyncBool:
lThread = threading.Thread(target=_CMDRunAndListenLogs, kwargs={"inCMDStr":inCMDStr, "inLogger":inLogger}) lThread = threading.Thread(target=_CMDRunAndListenLogs, kwargs={"inCMDStr":inCMDStr, "inLogger":inLogger})
lThread.start() lThread.start()
lResultStr="ActivityList has been started in async mode - no output is available here." lResultStr="Список ActivityList был запущен в асинхронном режиме - захватить содержимое невозможно"
else: else:
lResultStr = _CMDRunAndListenLogs(inCMDStr=inCMDStr, inLogger=inLogger) lResultStr = _CMDRunAndListenLogs(inCMDStr=inCMDStr, inLogger=inLogger)
#lCMDCode = "cmd /c " + inCMDStr #lCMDCode = "cmd /c " + inCMDStr
@ -570,7 +570,7 @@ def OrchestratorRestart(inGSettings=None):
OrchestratorSessionSave(inGSettings=inGSettings) # Dump RDP List in file json OrchestratorSessionSave(inGSettings=inGSettings) # Dump RDP List in file json
if inGSettings is not None: if inGSettings is not None:
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
if lL: lL.info(f"Do restart") if lL: lL.info(f"Выполнить перезапуск оркестратора")
# Restart session # Restart session
if CrossOS.IS_WINDOWS_BOOL: os.execl(sys.executable, os.path.abspath(__file__), *sys.argv) if CrossOS.IS_WINDOWS_BOOL: os.execl(sys.executable, os.path.abspath(__file__), *sys.argv)
if CrossOS.IS_LINUX_BOOL: os.execl(sys.executable, sys.executable, *sys.argv) if CrossOS.IS_LINUX_BOOL: os.execl(sys.executable, sys.executable, *sys.argv)
@ -707,7 +707,7 @@ def OrchestratorPySearchInit(inGlobPatternStr, inDefStr = None, inDefArgNameGSet
sys.modules[lModuleNameStr] = lTechModuleFromSpec # Add initialized module in sys - python will not init this module enought sys.modules[lModuleNameStr] = lTechModuleFromSpec # Add initialized module in sys - python will not init this module enought
lTechSpecificationModuleLoader = lTechSpecification.loader.exec_module(lTechModuleFromSpec) lTechSpecificationModuleLoader = lTechSpecification.loader.exec_module(lTechModuleFromSpec)
lItemDict = {"ModuleNameStr": lModuleNameStr, "PyPathStr": lPyPathItemStr, "Module": lTechModuleFromSpec} lItemDict = {"ModuleNameStr": lModuleNameStr, "PyPathStr": lPyPathItemStr, "Module": lTechModuleFromSpec}
if lL: lL.info(f"Py module {lModuleNameStr} has been successfully initialized.") if lL: lL.info(f"Модуль .py {lModuleNameStr} был успешно инициализирован")
inResultDict[lModuleNameStr]=lItemDict inResultDict[lModuleNameStr]=lItemDict
# Backward compatibility to call def with gsettings when init # Backward compatibility to call def with gsettings when init
if inDefStr is not None and inDefStr != "": if inDefStr is not None and inDefStr != "":
@ -775,10 +775,10 @@ def OrchestratorSessionSave(inGSettings=None):
with open('_SessionLast_GSettings.pickle', 'wb') as lFile: with open('_SessionLast_GSettings.pickle', 'wb') as lFile:
pickle.dump(lDumpDict, lFile) pickle.dump(lDumpDict, lFile)
if lL: lL.info( if lL: lL.info(
f"Orchestrator has dump the GSettings (new dump mode from v1.2.7) before the restart.") f"Оркестратор сохранил в рабочую директорию список РДП соединений и словарь DataStorage. При следующем запуске оркестратора информация востановится с диска")
except Exception as e: except Exception as e:
if lL: lL.exception(f"Exception when dump data before restart the Orchestrator") if lL: lL.exception(f"Произошла ошибка при сохранении данных в файл")
return True return True
def OrchestratorSessionRestore(inGSettings=None): def OrchestratorSessionRestore(inGSettings=None):
@ -1080,7 +1080,7 @@ def WebAuditMessageCreate(inRequest=None, inOperationCodeStr="-", inMessageStr="
lUserDict = WebUserInfoGet(inRequest=inRequest) lUserDict = WebUserInfoGet(inRequest=inRequest)
lDomainUpperStr = lUserDict["DomainUpperStr"] lDomainUpperStr = lUserDict["DomainUpperStr"]
lUserLoginStr = lUserDict["UserNameUpperStr"] lUserLoginStr = lUserDict["UserNameUpperStr"]
lResultStr = f"WebAudit :: {lDomainUpperStr}\\\\{lUserLoginStr}@{lClientIPStr} :: {inOperationCodeStr} :: {inMessageStr}" lResultStr = f"ВебАудит :: {lDomainUpperStr}\\\\{lUserLoginStr}@{lClientIPStr} :: {inOperationCodeStr} :: {inMessageStr}"
except Exception as e: except Exception as e:
print(str(e)) # Has no logger - must be dead alg branch print(str(e)) # Has no logger - must be dead alg branch
lResultStr = inMessageStr lResultStr = inMessageStr
@ -1621,7 +1621,7 @@ def ActivityItemDefAliasModulesLoad():
Загрузить все функции из импортированных модулей sys.modules в ActivityItem синонимы - полезно для отладки со стороны панели управления. Загрузить все функции из импортированных модулей sys.modules в ActivityItem синонимы - полезно для отладки со стороны панели управления.
""" """
lL = OrchestratorLoggerGet() lL = OrchestratorLoggerGet()
lL.info(f"ActivityItem aliases: start to load sys.modules") lL.info(f"Синонимы функций: старт инициализации sys.modules")
lSysModulesSnapshot = copy.copy(sys.modules) # Actual when start from jupyter lSysModulesSnapshot = copy.copy(sys.modules) # Actual when start from jupyter
for lModuleItemStr in lSysModulesSnapshot: for lModuleItemStr in lSysModulesSnapshot:
lModuleItem = lSysModulesSnapshot[lModuleItemStr] lModuleItem = lSysModulesSnapshot[lModuleItemStr]
@ -1632,7 +1632,7 @@ def ActivityItemDefAliasModulesLoad():
ActivityItemDefAliasCreate(inDef=lDefItem, inAliasStr=f"{lModuleItemStr}.{lDefItemStr}") ActivityItemDefAliasCreate(inDef=lDefItem, inAliasStr=f"{lModuleItemStr}.{lDefItemStr}")
except ModuleNotFoundError: except ModuleNotFoundError:
pass pass
lL.info(f"ActivityItem aliases: finish to load sys.modules") lL.info(f"Синонимы функций: окончание инициализации sys.modules")
def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None): def ActivityItemDefAliasUpdate(inDef, inAliasStr, inGSettings = None):
""" """
@ -2017,7 +2017,7 @@ def ProcessDefIntervalCall(inDef, inIntervalSecFloat, inIntervalAsyncBool=False,
else: else:
# Internal def to execute periodically # Internal def to execute periodically
def __Execute__(inGSettings, inDef, inIntervalSecFloat, inIntervalAsyncBool, inDefArgList, inDefArgDict, inLogger, inDefArgGSettingsNameStr, inDefArgLoggerNameStr): def __Execute__(inGSettings, inDef, inIntervalSecFloat, inIntervalAsyncBool, inDefArgList, inDefArgDict, inLogger, inDefArgGSettingsNameStr, inDefArgLoggerNameStr):
if inLogger: inLogger.info(f"__Orchestrator__.ProcessDefIntervalCall: Interval execution has been started. Def: {str(inDef)}") if inLogger: inLogger.info(f"__Orchestrator__.ProcessDefIntervalCall: вызов функции по циклу инициализирован. Функция: {str(inDef)}")
# Prepare gSettings and logger args # Prepare gSettings and logger args
if inDefArgGSettingsNameStr is not None: if inDefArgGSettingsNameStr is not None:
inDefArgDict[inDefArgGSettingsNameStr] = inGSettings inDefArgDict[inDefArgGSettingsNameStr] = inGSettings
@ -2790,7 +2790,6 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
#Logger alias #Logger alias
lL = gSettingsDict["Logger"] lL = gSettingsDict["Logger"]
if lL: lL.info("Link the gSettings in submodules") #Logging
Processor.gSettingsDict = gSettingsDict Processor.gSettingsDict = gSettingsDict
Timer.gSettingsDict = gSettingsDict Timer.gSettingsDict = gSettingsDict
Timer.Processor.gSettingsDict = gSettingsDict Timer.Processor.gSettingsDict = gSettingsDict
@ -2849,26 +2848,26 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
lRobotScreenActiveThread = threading.Thread(target= Monitor.CheckScreen) lRobotScreenActiveThread = threading.Thread(target= Monitor.CheckScreen)
lRobotScreenActiveThread.daemon = True # Run the thread in daemon mode. lRobotScreenActiveThread.daemon = True # Run the thread in daemon mode.
lRobotScreenActiveThread.start() # Start the thread execution. lRobotScreenActiveThread.start() # Start the thread execution.
if lL: lL.info("Robot Screen active has been started") #Logging if lL: lL.info("Модуль активного рабочего стола инициализирован") #Logging
# Init the RobotRDPActive in another thread # Init the RobotRDPActive in another thread
lRobotRDPThreadControlDict = {"ThreadExecuteBool":True} # inThreadControlDict = {"ThreadExecuteBool":True} lRobotRDPThreadControlDict = {"ThreadExecuteBool":True} # inThreadControlDict = {"ThreadExecuteBool":True}
lRobotRDPActiveThread = threading.Thread(target= RobotRDPActive.RobotRDPActive, kwargs={"inGSettings":gSettingsDict, "inThreadControlDict":lRobotRDPThreadControlDict}) lRobotRDPActiveThread = threading.Thread(target= RobotRDPActive.RobotRDPActive, kwargs={"inGSettings":gSettingsDict, "inThreadControlDict":lRobotRDPThreadControlDict})
lRobotRDPActiveThread.daemon = True # Run the thread in daemon mode. lRobotRDPActiveThread.daemon = True # Run the thread in daemon mode.
lRobotRDPActiveThread.start() # Start the thread execution. lRobotRDPActiveThread.start() # Start the thread execution.
if lL: lL.info("Robot RDP active has been started") #Logging if lL: lL.info("Модуль подключения по РДП инициализированн") #Logging
# Init autocleaner in another thread # Init autocleaner in another thread
lAutocleanerThread = threading.Thread(target= GSettingsAutocleaner, kwargs={"inGSettings":gSettingsDict}) lAutocleanerThread = threading.Thread(target= GSettingsAutocleaner, kwargs={"inGSettings":gSettingsDict})
lAutocleanerThread.daemon = True # Run the thread in daemon mode. lAutocleanerThread.daemon = True # Run the thread in daemon mode.
lAutocleanerThread.start() # Start the thread execution. lAutocleanerThread.start() # Start the thread execution.
if lL: lL.info("Autocleaner thread has been started") #Logging if lL: lL.info("Модуль автоочистки инициализирован") #Logging
# Set flag that orchestrator has been initialized # Set flag that orchestrator has been initialized
inGSettings["HiddenIsOrchestratorInitializedBool"] = True inGSettings["HiddenIsOrchestratorInitializedBool"] = True
# Orchestrator start activity # Orchestrator start activity
if lL: lL.info("Orchestrator start activity run") #Logging if lL: lL.info("Исполнение списка Активностей") #Logging
for lActivityItem in gSettingsDict["OrchestratorStart"]["ActivityList"]: for lActivityItem in gSettingsDict["OrchestratorStart"]["ActivityList"]:
# Processor.ActivityListOrDict(lActivityItem) # Processor.ActivityListOrDict(lActivityItem)
Processor.ActivityListExecute(inGSettings=gSettingsDict,inActivityList=[BackwardCompatibility.v1_2_0_ProcessorOld2NewActivityDict(lActivityItem)]) Processor.ActivityListExecute(inGSettings=gSettingsDict,inActivityList=[BackwardCompatibility.v1_2_0_ProcessorOld2NewActivityDict(lActivityItem)])
@ -2876,25 +2875,25 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
lProcessorThread = threading.Thread(target= Processor.ProcessorRunSync, kwargs={"inGSettings":gSettingsDict, "inRobotRDPThreadControlDict":lRobotRDPThreadControlDict}) lProcessorThread = threading.Thread(target= Processor.ProcessorRunSync, kwargs={"inGSettings":gSettingsDict, "inRobotRDPThreadControlDict":lRobotRDPThreadControlDict})
lProcessorThread.daemon = True # Run the thread in daemon mode. lProcessorThread.daemon = True # Run the thread in daemon mode.
lProcessorThread.start() # Start the thread execution. lProcessorThread.start() # Start the thread execution.
if lL: lL.info("Processor has been started (ProcessorDict)") #Logging if lL: lL.info("Модуль процессора инициализирован") #Logging
# Processor monitor thread # Processor monitor thread
lProcessorMonitorThread = threading.Thread(target= Processor.ProcessorMonitorRunSync, kwargs={"inGSettings":gSettingsDict}) lProcessorMonitorThread = threading.Thread(target= Processor.ProcessorMonitorRunSync, kwargs={"inGSettings":gSettingsDict})
lProcessorMonitorThread.daemon = True # Run the thread in daemon mode. lProcessorMonitorThread.daemon = True # Run the thread in daemon mode.
lProcessorMonitorThread.start() # Start the thread execution. lProcessorMonitorThread.start() # Start the thread execution.
if lL: lL.info("Processor monitor has been started") #Logging if lL: lL.info("Модуль контроля процессора инициализирован") #Logging
# Scheduler loop # Scheduler loop
lSchedulerThread = threading.Thread(target= __deprecated_orchestrator_loop__) lSchedulerThread = threading.Thread(target= __deprecated_orchestrator_loop__)
lSchedulerThread.daemon = True # Run the thread in daemon mode. lSchedulerThread.daemon = True # Run the thread in daemon mode.
lSchedulerThread.start() # Start the thread execution. lSchedulerThread.start() # Start the thread execution.
if lL: lL.info("Scheduler (old) loop start") #Logging if lL: lL.info("Модуль расписания (старая версия) инициализирован") #Logging
# Schedule (new) loop # Schedule (new) loop
lScheduleThread = threading.Thread(target= __schedule_loop__) lScheduleThread = threading.Thread(target= __schedule_loop__)
lScheduleThread.daemon = True # Run the thread in daemon mode. lScheduleThread.daemon = True # Run the thread in daemon mode.
lScheduleThread.start() # Start the thread execution. lScheduleThread.start() # Start the thread execution.
if lL: lL.info("Schedule module (new) loop start") #Logging if lL: lL.info("Модуль расписания (новая версия) инициализирован") #Logging
# Restore state for process # Restore state for process
for lProcessKeyTuple in inGSettings["ManagersProcessDict"]: for lProcessKeyTuple in inGSettings["ManagersProcessDict"]:
@ -2968,7 +2967,7 @@ def __deprecated_orchestrator_loop__():
lCurrentDateTime >= lActivityDateTime): lCurrentDateTime >= lActivityDateTime):
# Log info about activity # Log info about activity
if lL: lL.info( if lL: lL.info(
f"Scheduler:: Activity list is started in new thread. Parameters are not available to see.") # Logging f"Модуль расписания (старая версия):: Активность была инициализирована в отдельном потоке. В целях информационной безопасности параметры недоступны для просмотра") # Logging
# Do the activity # Do the activity
lThread = threading.Thread(target=Processor.ActivityListExecute, lThread = threading.Thread(target=Processor.ActivityListExecute,
kwargs={"inGSettings": inGSettings, kwargs={"inGSettings": inGSettings,
@ -2977,12 +2976,12 @@ def __deprecated_orchestrator_loop__():
lIterationLastDateTime = datetime.datetime.now() # Set the new datetime for the new processor activity lIterationLastDateTime = datetime.datetime.now() # Set the new datetime for the new processor activity
except Exception as e: except Exception as e:
if lL: lL.exception( if lL: lL.exception(
f"Scheduler: Exception has been catched in Scheduler module when activity time item was initialising. ActivityTimeItem is {lItem}") f"Модуль расписания (старая версия): Ошибка. Элемент ActivityTimeItem: {lItem}")
lDaemonLastDateTime = lIterationLastDateTime # Set the new datetime for the new processor activity lDaemonLastDateTime = lIterationLastDateTime # Set the new datetime for the new processor activity
# Уснуть до следующего прогона # Уснуть до следующего прогона
time.sleep(lDaemonLoopSeconds) time.sleep(lDaemonLoopSeconds)
except Exception as e: except Exception as e:
if lL: lL.exception(f"Scheduler: Exception has been catched in Scheduler module. Global error") if lL: lL.exception(f"Модуль расписания (старая версия): Глобальная ошибка инициализации - обратитесь в тех. поддержку pyOpenRPA")
# Backward compatibility below to 1.2.0 # Backward compatibility below to 1.2.0
def __deprecated_orchestrator_start__(): def __deprecated_orchestrator_start__():

@ -154,7 +154,7 @@ def run():
server_address = (inServerAddress, inPort) server_address = (inServerAddress, inPort)
httpd = HTTPServer(server_address, testHTTPServer_RequestHandler) httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
# Logging # Logging
gSettingsDict["Logger"].info(f"Server init. Listen URL: {inServerAddress}, Listen port: {inPort}") gSettingsDict["Logger"].info(f"Сервер:: Прослушиваемый URL: {inServerAddress}, Прослушиваемый порт: {inPort}")
# Запуск адреса в браузере # Запуск адреса в браузере
os.system(f"explorer http://127.0.0.1:{str(inPort)}") os.system(f"explorer http://127.0.0.1:{str(inPort)}")
Usage.Process(inComponentStr="Studio") Usage.Process(inComponentStr="Studio")

@ -285,7 +285,7 @@ class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
if not lAuthenticateDict["User"]: if not lAuthenticateDict["User"]:
lFlagAccessUserBlock=True lFlagAccessUserBlock=True
# Logging # Logging
gSettingsDict["Logger"].info(f"HTTP request /. Domain: {lAuthenticateDict['Domain']}, User: {lAuthenticateDict['User']}") gSettingsDict["Logger"].info(f"HTTP запросот пользователя: Домен: {lAuthenticateDict['Domain']}, Логин: {lAuthenticateDict['User']}")
if lFlagAccessUserBlock: if lFlagAccessUserBlock:
AuthenticateBlock(self) AuthenticateBlock(self)
##################################### #####################################
@ -389,7 +389,7 @@ class RobotDaemonServer(Thread):
server_address = (inServerAddress, inPort) server_address = (inServerAddress, inPort)
#httpd = HTTPServer(server_address, testHTTPServer_RequestHandler) #httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
# Logging # Logging
gSettingsDict["Logger"].info(f"Server init. Listen URL: {inServerAddress}, Listen port: {inPort}") gSettingsDict["Logger"].info(f"Сервер:: Слушает сетевую карту: {inServerAddress}, Слушает порт: {inPort}")
#httpd.serve_forever() #httpd.serve_forever()
httpd = ThreadedHTTPServer(server_address, testHTTPServer_RequestHandler) httpd = ThreadedHTTPServer(server_address, testHTTPServer_RequestHandler)
#print('Starting server, use <Ctrl-C> to stop') #print('Starting server, use <Ctrl-C> to stop')

@ -26,7 +26,7 @@ def Init(inLogger=None):
gIsSignalCloseBool = False # Init default gIsSignalCloseBool = False # Init default
gLogger = inLogger gLogger = inLogger
import threading import threading
if gLogger: gLogger.info(f"StopSafe: Init termination catch thread") if gLogger: gLogger.info(f"Безопасная остановка: получен сигнал безопасной остановки")
shutdown_thread = threading.Thread(target=_shutdown_monitor) shutdown_thread = threading.Thread(target=_shutdown_monitor)
shutdown_thread.start() shutdown_thread.start()
#shutdown_thread.join() #shutdown_thread.join()
@ -62,5 +62,5 @@ def _shutdown_monitor():
win32gui.PumpMessages() win32gui.PumpMessages()
gIsSignalCloseBool = True # WM_CLOSE message has come gIsSignalCloseBool = True # WM_CLOSE message has come
if gLogger: if gLogger:
gLogger.info(f"StopSafe: Program has catch VM_CLOSE signal - do safe exit") gLogger.info(f"Безопасная остановка: Получен сигнал безопасной остановки (VM_CLOSE) - выполнить остановку")

@ -1,4 +1,4 @@
# Sphinx build info version 1 # 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. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 25c44f317407aca24634d158c647e585 config: 909fd36f832414fdc07bc80b4bfebf8b
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1. Первый запуск (Windows &amp; Linux) &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>1. Первый запуск (Windows &amp; Linux) &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Лицензия &amp; Контакты &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Лицензия &amp; Контакты &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Функции &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Функции &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Функции &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Функции &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -340,175 +359,178 @@
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OSRemotePCRestart</span></code></a>(inHostStr[, inForceBool, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OSRemotePCRestart</span></code></a>(inHostStr[, inForceBool, …])</p></td>
<td><p>Отправить сигнал на удаленную перезагрузку операционной системы.</p></td> <td><p>Отправить сигнал на удаленную перезагрузку операционной системы.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator" title="pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Orchestrator</span></code></a>([inGSettings, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OSRestart</span></code></a>([inForceBool, inLogger])</p></td>
<td><p>L+,W+: Отправить сигнал на перезагрузку операционной системы.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator" title="pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Orchestrator</span></code></a>([inGSettings, …])</p></td>
<td><p>Инициализация ядра Оркестратора (всех потоков)</p></td> <td><p>Инициализация ядра Оркестратора (всех потоков)</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorInitWait" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorInitWait"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorInitWait</span></code></a>()</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorInitWait" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorInitWait"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorInitWait</span></code></a>()</p></td>
<td><p>Ожидать инициализацию ядра Оркестратора</p></td> <td><p>Ожидать инициализацию ядра Оркестратора</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsAdmin" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsAdmin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorIsAdmin</span></code></a>()</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsAdmin" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsAdmin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorIsAdmin</span></code></a>()</p></td>
<td><p>Проверить, запущен ли Оркестратор с правами администратора.</p></td> <td><p>Проверить, запущен ли Оркестратор с правами администратора.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsInited" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsInited"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorIsInited</span></code></a>()</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsInited" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorIsInited"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorIsInited</span></code></a>()</p></td>
<td><p>Проверить, было ли проинициализировано ядро Оркестратора</p></td> <td><p>Проверить, было ли проинициализировано ядро Оркестратора</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorLoggerGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorLoggerGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorLoggerGet</span></code></a>()</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorLoggerGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorLoggerGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorLoggerGet</span></code></a>()</p></td>
<td><p>Получить логгер Оркестратора</p></td> <td><p>Получить логгер Оркестратора</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorPySearchInit" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorPySearchInit"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorPySearchInit</span></code></a>(inGlobPatternStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorPySearchInit" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorPySearchInit"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorPySearchInit</span></code></a>(inGlobPatternStr[, …])</p></td>
<td><p>Выполнить поиск и инициализацию пользовательских .py файлов в Оркестраторе (например панелей управления роботов)</p></td> <td><p>Выполнить поиск и инициализацию пользовательских .py файлов в Оркестраторе (например панелей управления роботов)</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRerunAsAdmin" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRerunAsAdmin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorRerunAsAdmin</span></code></a>()</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRerunAsAdmin" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRerunAsAdmin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorRerunAsAdmin</span></code></a>()</p></td>
<td><p>Перезапустить Оркестратор с правами локального администратора.</p></td> <td><p>Перезапустить Оркестратор с правами локального администратора.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorRestart</span></code></a>([inGSettings])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorRestart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorRestart</span></code></a>([inGSettings])</p></td>
<td><p>Перезапуск Оркестратора с сохранением информации о запущенных RDP сессиях.</p></td> <td><p>Перезапуск Оркестратора с сохранением информации о запущенных RDP сессиях.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorScheduleGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorScheduleGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorScheduleGet</span></code></a>()</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorScheduleGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorScheduleGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorScheduleGet</span></code></a>()</p></td>
<td><p>Базовый объект расписания, который можно использовать для запуска / остановки роботов.</p></td> <td><p>Базовый объект расписания, который можно использовать для запуска / остановки роботов.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionRestore" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionRestore"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorSessionRestore</span></code></a>([inGSettings])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionRestore" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionRestore"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorSessionRestore</span></code></a>([inGSettings])</p></td>
<td><p>Восстановить состояние Оркестратора, если ранее состояние Оркестратора было сохранено с помощью функции OrchestratorSessionSave:</p></td> <td><p>Восстановить состояние Оркестратора, если ранее состояние Оркестратора было сохранено с помощью функции OrchestratorSessionSave:</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorSessionSave</span></code></a>([inGSettings])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorSessionSave</span></code></a>([inGSettings])</p></td>
<td><p>Сохранить состояние Оркестратора (для дальнейшего восстановления в случае перезапуска):</p></td> <td><p>Сохранить состояние Оркестратора (для дальнейшего восстановления в случае перезапуска):</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorThreadStart</span></code></a>(inDef, *inArgList, …)</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OrchestratorThreadStart</span></code></a>(inDef, *inArgList, …)</p></td>
<td><p>Запустить функцию в отдельном потоке.</p></td> <td><p>Запустить функцию в отдельном потоке.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessDefIntervalCall" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessDefIntervalCall"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessDefIntervalCall</span></code></a>(inDef, inIntervalSecFloat)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessDefIntervalCall" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessDefIntervalCall"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessDefIntervalCall</span></code></a>(inDef, inIntervalSecFloat)</p></td>
<td><p>Периодический вызов функции Python.</p></td> <td><p>Периодический вызов функции Python.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessIsStarted</span></code></a>(inProcessNameWOExeStr)</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessIsStarted"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessIsStarted</span></code></a>(inProcessNameWOExeStr)</p></td>
<td><p>Проверить, запущен ли процесс, который в наименовании содержит inProcessNameWOExeStr.</p></td> <td><p>Проверить, запущен ли процесс, который в наименовании содержит inProcessNameWOExeStr.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessListGet</span></code></a>([inProcessNameWOExeList])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessListGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessListGet</span></code></a>([inProcessNameWOExeList])</p></td>
<td><p>Вернуть список процессов, запущенных на ОС, где работает Оркестратор.</p></td> <td><p>Вернуть список процессов, запущенных на ОС, где работает Оркестратор.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessStart</span></code></a>(inPathStr, inArgList[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessStart</span></code></a>(inPathStr, inArgList[, …])</p></td>
<td><p>Запуск процесса на сессии Оркестратора, если на ОС не запущен процесс inStopProcessNameWOExeStr.</p></td> <td><p>Запуск процесса на сессии Оркестратора, если на ОС не запущен процесс inStopProcessNameWOExeStr.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessStop</span></code></a>(inProcessNameWOExeStr, …[, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessStop</span></code></a>(inProcessNameWOExeStr, …[, …])</p></td>
<td><p>Остановить процесс на ОС, где работает Оркестратор, под учетной записью inUserNameStr.</p></td> <td><p>Остановить процесс на ОС, где работает Оркестратор, под учетной записью inUserNameStr.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorActivityItemAppend</span></code></a>([inGSettings, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemAppend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorActivityItemAppend</span></code></a>([inGSettings, …])</p></td>
<td><p>Добавить активность (ActivityItem) в процессорную очередь.</p></td> <td><p>Добавить активность (ActivityItem) в процессорную очередь.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorActivityItemCreate</span></code></a>(inDef[, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorActivityItemCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorActivityItemCreate</span></code></a>(inDef[, …])</p></td>
<td><p>Создать Активность (ActivityItem).</p></td> <td><p>Создать Активность (ActivityItem).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorAliasDefCreate</span></code></a>(inDef[, inAliasStr, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorAliasDefCreate</span></code></a>(inDef[, inAliasStr, …])</p></td>
<td><p>Создать синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна).</p></td> <td><p>Создать синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна).</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorAliasDefUpdate</span></code></a>(inDef, inAliasStr[, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.ProcessorAliasDefUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ProcessorAliasDefUpdate</span></code></a>(inDef, inAliasStr[, …])</p></td>
<td><p>Обновить синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна).</p></td> <td><p>Обновить синоним (текстовый ключ) для инициации выполнения функции в том случае, если запрос на выполнения пришел из вне (передача функций невозможна).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PythonStart</span></code></a>(inModulePathStr, inDefNameStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart" title="pyOpenRPA.Orchestrator.__Orchestrator__.PythonStart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PythonStart</span></code></a>(inModulePathStr, inDefNameStr[, …])</p></td>
<td><p>Импорт модуля и выполнение функции в процессе Оркестратора.</p></td> <td><p>Импорт модуля и выполнение функции в процессе Оркестратора.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionCMDRun</span></code></a>(inRDPSessionKeyStr, inCMDStr)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionCMDRun"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionCMDRun</span></code></a>(inRDPSessionKeyStr, inCMDStr)</p></td>
<td><p>Отправить CMD команду на удаленную сесиию через RDP окно (без Агента).</p></td> <td><p>Отправить CMD команду на удаленную сесиию через RDP окно (без Агента).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionConnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionConnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionConnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td>
<td><p>Выполнить подключение к RDP и следить за стабильностью соединения со стороны Оркестратора.</p></td> <td><p>Выполнить подключение к RDP и следить за стабильностью соединения со стороны Оркестратора.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionDisconnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionDisconnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionDisconnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td>
<td><p>Выполнить отключение RDP сессии и прекратить мониторить его активность.</p></td> <td><p>Выполнить отключение RDP сессии и прекратить мониторить его активность.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionFileStoredRecieve</span></code></a>(…[, inGSettings])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredRecieve"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionFileStoredRecieve</span></code></a>(…[, inGSettings])</p></td>
<td><p>Получение файла со стороны RDP сессии на сторону Оркестратора через UI инструменты RDP окна (без Агента).</p></td> <td><p>Получение файла со стороны RDP сессии на сторону Оркестратора через UI инструменты RDP окна (без Агента).</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionFileStoredSend</span></code></a>(inRDPSessionKeyStr, …)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionFileStoredSend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionFileStoredSend</span></code></a>(inRDPSessionKeyStr, …)</p></td>
<td><p>Отправка файла со стороны Оркестратора на сторону RDP сессии через UI инструменты RDP окна (без Агента).</p></td> <td><p>Отправка файла со стороны Оркестратора на сторону RDP сессии через UI инструменты RDP окна (без Агента).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionLogoff</span></code></a>(inRDPSessionKeyStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionLogoff"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionLogoff</span></code></a>(inRDPSessionKeyStr[, …])</p></td>
<td><p>Выполнить отключение (logoff) на RDP сессии и прекратить мониторить активность со стороны Оркестратора.</p></td> <td><p>Выполнить отключение (logoff) на RDP сессии и прекратить мониторить активность со стороны Оркестратора.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionMonitorStop</span></code></a>(inRDPSessionKeyStr[, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionMonitorStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionMonitorStop</span></code></a>(inRDPSessionKeyStr[, …])</p></td>
<td><p>Прекратить мониторить активность RDP соединения со стороны Оркестратора.</p></td> <td><p>Прекратить мониторить активность RDP соединения со стороны Оркестратора.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionProcessStartIfNotRunning</span></code></a>(…[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStartIfNotRunning"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionProcessStartIfNotRunning</span></code></a>(…[, …])</p></td>
<td><p>Выполнить запуск процесса на RDP сессии через графические UI инструменты (без Агента).</p></td> <td><p>Выполнить запуск процесса на RDP сессии через графические UI инструменты (без Агента).</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionProcessStop</span></code></a>(inRDPSessionKeyStr, …)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionProcessStop"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionProcessStop</span></code></a>(inRDPSessionKeyStr, …)</p></td>
<td><p>Отправка CMD команды в RDP окне на остановку процесса (без Агента).</p></td> <td><p>Отправка CMD команды в RDP окне на остановку процесса (без Агента).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionReconnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPSessionReconnect"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPSessionReconnect</span></code></a>(inRDPSessionKeyStr[, …])</p></td>
<td><p>Выполнить переподключение RDP сессии и продолжить мониторить его активность.</p></td> <td><p>Выполнить переподключение RDP сессии и продолжить мониторить его активность.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPTemplateCreate</span></code></a>(inLoginStr, inPasswordStr)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.RDPTemplateCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RDPTemplateCreate</span></code></a>(inLoginStr, inPasswordStr)</p></td>
<td><p>Создать шаблон подключения RDP (dict).</p></td> <td><p>Создать шаблон подключения RDP (dict).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly" title="pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SchedulerActivityTimeAddWeekly</span></code></a>([…])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly" title="pyOpenRPA.Orchestrator.__Orchestrator__.SchedulerActivityTimeAddWeekly"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SchedulerActivityTimeAddWeekly</span></code></a>([…])</p></td>
<td><p>Добавить активность по расписанию.</p></td> <td><p>Добавить активность по расписанию.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotExists" title="pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotExists"><code class="xref py py-obj docutils literal notranslate"><span class="pre">StorageRobotExists</span></code></a>(inRobotNameStr)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotExists" title="pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotExists"><code class="xref py py-obj docutils literal notranslate"><span class="pre">StorageRobotExists</span></code></a>(inRobotNameStr)</p></td>
<td><p>Проверить, существует ли ключ inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings &gt; StarageDict)</p></td> <td><p>Проверить, существует ли ключ inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings &gt; StarageDict)</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">StorageRobotGet</span></code></a>(inRobotNameStr)</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.StorageRobotGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">StorageRobotGet</span></code></a>(inRobotNameStr)</p></td>
<td><p>Получить содержимое по ключу робота inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings &gt; StarageDict)</p></td> <td><p>Получить содержимое по ключу робота inRobotNameStr в хранилище пользовательской информации StorageDict (GSettings &gt; StarageDict)</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACKeyListCheck</span></code></a>(inRequest, inRoleKeyList)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACKeyListCheck"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACKeyListCheck</span></code></a>(inRequest, inRoleKeyList)</p></td>
<td><p>Проверить права доступа для пользователя запроса по списку ключей до права.</p></td> <td><p>Проверить права доступа для пользователя запроса по списку ключей до права.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACSuperTokenUpdate</span></code></a>(inSuperTokenStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACSuperTokenUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACSuperTokenUpdate</span></code></a>(inSuperTokenStr[, …])</p></td>
<td><p>Добавить супертокен (полный доступ).</p></td> <td><p>Добавить супертокен (полный доступ).</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACUpdate</span></code></a>(inADLoginStr[, inADStr, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACUpdate</span></code></a>(inADLoginStr[, inADStr, …])</p></td>
<td><p>Дообогащение словаря доступа UAC пользователя inADStrinADLoginStr.</p></td> <td><p>Дообогащение словаря доступа UAC пользователя inADStrinADLoginStr.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACUserDictGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACUserDictGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACUserDictGet</span></code></a>(inRequest)</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.UACUserDictGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.UACUserDictGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UACUserDictGet</span></code></a>(inRequest)</p></td>
<td><p>Вернуть UAC (User Access Control) словарб доступов для пользователя, который отправил запрос.</p></td> <td><p>Вернуть UAC (User Access Control) словарб доступов для пользователя, который отправил запрос.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebAuditMessageCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebAuditMessageCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebAuditMessageCreate</span></code></a>([inRequest, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebAuditMessageCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebAuditMessageCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebAuditMessageCreate</span></code></a>([inRequest, …])</p></td>
<td><p>Создание сообщения ИТ аудита с такими сведениями как (Домен, IP, логин и тд.).</p></td> <td><p>Создание сообщения ИТ аудита с такими сведениями как (Домен, IP, логин и тд.).</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebCPUpdate</span></code></a>(inCPKeyStr[, inHTMLRenderDef, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebCPUpdate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebCPUpdate</span></code></a>(inCPKeyStr[, inHTMLRenderDef, …])</p></td>
<td><p>Добавить панель управления робота в Оркестратор.</p></td> <td><p>Добавить панель управления робота в Оркестратор.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebListenCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebListenCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebListenCreate</span></code></a>([inServerKeyStr, …])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebListenCreate" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebListenCreate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebListenCreate</span></code></a>([inServerKeyStr, …])</p></td>
<td><p>Настроить веб-сервер Оркестратора.</p></td> <td><p>Настроить веб-сервер Оркестратора.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestGet</span></code></a>()</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestGet</span></code></a>()</p></td>
<td><p>Вернуть экземпляр HTTP запроса, если функция вызвана в потоке, который был порожден для отработки HTTP запроса пользователя.</p></td> <td><p>Вернуть экземпляр HTTP запроса, если функция вызвана в потоке, который был порожден для отработки HTTP запроса пользователя.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyBytes" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyBytes"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyBytes</span></code></a>([inRequest])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyBytes" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyBytes"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyBytes</span></code></a>([inRequest])</p></td>
<td><p>Извлечь данные в байт виде из тела (body) HTTP запроса.</p></td> <td><p>Извлечь данные в байт виде из тела (body) HTTP запроса.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyJSON" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyJSON"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyJSON</span></code></a>([inRequest])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyJSON" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyJSON"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyJSON</span></code></a>([inRequest])</p></td>
<td><p>Извлечь из тела (body) запроса HTTP JSON данные и преобразовать в Dict / List структуры языка Python.</p></td> <td><p>Извлечь из тела (body) запроса HTTP JSON данные и преобразовать в Dict / List структуры языка Python.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyStr" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyStr"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyStr</span></code></a>([inRequest])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyStr" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseBodyStr"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseBodyStr</span></code></a>([inRequest])</p></td>
<td><p>Извлечь данные в виде строки из тела (body) HTTP запроса.</p></td> <td><p>Извлечь данные в виде строки из тела (body) HTTP запроса.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseFile" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseFile</span></code></a>([inRequest])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseFile" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParseFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParseFile</span></code></a>([inRequest])</p></td>
<td><p>Извлечь файл (наименование + содержимое в виде строки байт b““) из HTTP запроса пользователя.</p></td> <td><p>Извлечь файл (наименование + содержимое в виде строки байт b““) из HTTP запроса пользователя.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParsePath" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParsePath"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParsePath</span></code></a>([inRequest])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParsePath" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestParsePath"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestParsePath</span></code></a>([inRequest])</p></td>
<td><p>Извлечь декодированный URL путь из HTTP запроса пользователя в формате строки.</p></td> <td><p>Извлечь декодированный URL путь из HTTP запроса пользователя в формате строки.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestResponseSend" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestResponseSend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestResponseSend</span></code></a>(inResponeStr[, …])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestResponseSend" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebRequestResponseSend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebRequestResponseSend</span></code></a>(inResponeStr[, …])</p></td>
<td><p>Установить ответ на HTTP запрос пользователя.</p></td> <td><p>Установить ответ на HTTP запрос пользователя.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectDef</span></code></a>(inMethodStr, inURLStr, …)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectDef"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectDef</span></code></a>(inMethodStr, inURLStr, …)</p></td>
<td><p>Подключить функцию Python к URL.</p></td> <td><p>Подключить функцию Python к URL.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectFile</span></code></a>(inMethodStr, inURLStr, …)</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectFile</span></code></a>(inMethodStr, inURLStr, …)</p></td>
<td><p>Подключить файл к URL.</p></td> <td><p>Подключить файл к URL.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectFolder</span></code></a>(inMethodStr, inURLStr, …)</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLConnectFolder"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLConnectFolder</span></code></a>(inMethodStr, inURLStr, …)</p></td>
<td><p>Подключить папку к URL.</p></td> <td><p>Подключить папку к URL.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLIndexChange" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLIndexChange"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLIndexChange</span></code></a>([inURLIndexStr])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebURLIndexChange" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebURLIndexChange"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebURLIndexChange</span></code></a>([inURLIndexStr])</p></td>
<td><p>Изменить адрес главной страницы Оркестратора.</p></td> <td><p>Изменить адрес главной страницы Оркестратора.</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserInfoGet</span></code></a>([inRequest])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserInfoGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserInfoGet</span></code></a>([inRequest])</p></td>
<td><p>Информация о пользователе, который отправил HTTP запрос.</p></td> <td><p>Информация о пользователе, который отправил HTTP запрос.</p></td>
</tr> </tr>
<tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserIsSuperToken</span></code></a>([inRequest, inGSettings])</p></td> <tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserIsSuperToken"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserIsSuperToken</span></code></a>([inRequest, inGSettings])</p></td>
<td><p>Проверить, авторизован ли HTTP запрос с помощью супер токена (токен, который не истекает).</p></td> <td><p>Проверить, авторизован ли HTTP запрос с помощью супер токена (токен, который не истекает).</p></td>
</tr> </tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserUACHierarchyGet</span></code></a>([inRequest])</p></td> <tr class="row-even"><td><p><a class="reference internal" href="#pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet" title="pyOpenRPA.Orchestrator.__Orchestrator__.WebUserUACHierarchyGet"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WebUserUACHierarchyGet</span></code></a>([inRequest])</p></td>
<td><p>Вернуть словарь доступа UAC в отношении пользователя, который выполнил HTTP запрос inRequest</p></td> <td><p>Вернуть словарь доступа UAC в отношении пользователя, который выполнил HTTP запрос inRequest</p></td>
</tr> </tr>
</tbody> </tbody>
@ -1169,6 +1191,24 @@
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">OSRestart</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inForceBool</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">inLogger</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#OSRestart"><span class="viewcode-link">[исходный код]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart" title="Ссылка на это определение"></a></dt>
<dd><p>L+,W+: Отправить сигнал на перезагрузку операционной системы.</p>
<p>!ВНИМАНИЕ! Перезапуск будет принят, если учетная запись имеет полномочия на перезапуск на соответсвующей машине.</p>
<dl class="field-list simple">
<dt class="field-odd">Параметры</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inForceBool</strong> True - принудительная перезагрузка; False - мягкая перезагрузка (дождаться окончания выполнения всех операций). По умолчанию True</p></li>
<li><p><strong>inLogger</strong> Логгер, в который отправлять информацию о результате выполнения команды</p></li>
</ul>
</dd>
<dt class="field-even">Результат</dt>
<dd class="field-even"><p></p>
</dd>
</dl>
</dd></dl>
<dl class="py function"> <dl class="py function">
<dt id="pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator"> <dt id="pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator">
<code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">Orchestrator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inDumpRestoreBool</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">inRunAsAdministratorBool</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#Orchestrator"><span class="viewcode-link">[исходный код]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator" title="Ссылка на это определение"></a></dt> <code class="sig-prename descclassname">pyOpenRPA.Orchestrator.__Orchestrator__.</code><code class="sig-name descname">Orchestrator</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">inGSettings</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">inDumpRestoreBool</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">inRunAsAdministratorBool</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html#Orchestrator"><span class="viewcode-link">[исходный код]</span></a><a class="headerlink" href="#pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator" title="Ссылка на это определение"></a></dt>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3. Настройки GSettings (шаблон) &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>3. Настройки GSettings (шаблон) &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -546,7 +565,7 @@
<span class="n">lL</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span> <span class="n">lL</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="c1"># create the logging file handler</span> <span class="c1"># create the logging file handler</span>
<span class="n">mRobotLoggerFH</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">FileHandler</span><span class="p">(</span> <span class="n">mRobotLoggerFH</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">FileHandler</span><span class="p">(</span>
<span class="s2">&quot;Reports</span><span class="se">\\</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y_%m_</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.log&quot;</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">normpath</span><span class="p">(</span><span class="s2">&quot;Reports</span><span class="se">\\</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y_%m_</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.log&quot;</span><span class="p">))</span>
<span class="n">mRobotLoggerFormatter</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">Formatter</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1"> - </span><span class="si">%(levelname)s</span><span class="s1"> - </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">)</span> <span class="n">mRobotLoggerFormatter</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">Formatter</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1"> - </span><span class="si">%(levelname)s</span><span class="s1"> - </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">mRobotLoggerFH</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">mRobotLoggerFormatter</span><span class="p">)</span> <span class="n">mRobotLoggerFH</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">mRobotLoggerFormatter</span><span class="p">)</span>
<span class="c1"># add handler to logger object</span> <span class="c1"># add handler to logger object</span>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>4. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>4. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -217,51 +236,6 @@
<div class="section" id="id3"> <div class="section" id="id3">
<h2>Параметры настройки<a class="headerlink" href="#id3" title="Ссылка на этот заголовок"></a></h2> <h2>Параметры настройки<a class="headerlink" href="#id3" title="Ссылка на этот заголовок"></a></h2>
<p>Также вы можете выполнить более тонкую настройку параметров Оркестратора. Ниже пример такой настройки:</p> <p>Также вы можете выполнить более тонкую настройку параметров Оркестратора. Ниже пример такой настройки:</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"># Config settings</span>
<span class="n">lPyOpenRPASourceFolderPathStr</span> <span class="o">=</span> <span class="p">(</span><span class="sa">r</span><span class="s2">&quot;../Sources&quot;</span><span class="p">)</span> <span class="c1"># Path for test pyOpenRPA package</span>
<span class="c1"># Operations</span>
<span class="k">if</span> <span class="n">lPyOpenRPASourceFolderPathStr</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lPyOpenRPASourceFolderPathStr</span><span class="p">)))</span> <span class="c1"># Path for test pyOpenRPA package</span>
<span class="c1"># Start import after config the pyOpenRPA folder</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA.Orchestrator</span> <span class="kn">import</span> <span class="n">SettingsTemplate</span> <span class="c1"># Import functionallity</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA.Tools</span> <span class="kn">import</span> <span class="n">CrossOS</span>
<span class="kn">from</span> <span class="nn">pyOpenRPA</span> <span class="kn">import</span> <span class="n">Orchestrator</span> <span class="c1"># Import orchestrator main</span>
<span class="c1">#Run as administrator</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">OrchestratorIsAdmin</span><span class="p">():</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">OrchestratorRerunAsAdmin</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Orchestrator will be run as administrator!&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">gSettings</span> <span class="o">=</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">GSettingsGet</span><span class="p">()</span>
<span class="c1">#gSettings = SettingsTemplate.Create(inModeStr=&quot;BASIC&quot;) # Create GSettings with basic configuration - no more config is available from the box - you can create own</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">OrchestratorLoggerGet</span><span class="p">()</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="c1"># TEST Add User ND - Add Login ND to superuser of the Orchestrator</span>
<span class="n">lUACClientDict</span> <span class="o">=</span> <span class="n">SettingsTemplate</span><span class="o">.</span><span class="n">__UACClientAdminCreate__</span><span class="p">()</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">UACUpdate</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">inADLoginStr</span><span class="o">=</span><span class="s2">&quot;ND&quot;</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="p">[],</span> <span class="n">inRoleHierarchyAllowedDict</span><span class="o">=</span><span class="n">lUACClientDict</span><span class="p">)</span>
<span class="c1"># TEST Add User IMaslov - Add Login IMaslov to superuser of the Orchestrator</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">UACUpdate</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">inADLoginStr</span><span class="o">=</span><span class="s2">&quot;IMaslov&quot;</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="p">[])</span>
<span class="c1"># TEST Add Supertoken for the all access between robots</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">UACSuperTokenUpdate</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">inSuperTokenStr</span><span class="o">=</span><span class="s2">&quot;1992-04-03-0643-ru-b4ff-openrpa52zzz&quot;</span><span class="p">)</span>
<span class="c1"># Add first interface!</span>
<span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_WINDOWS_BOOL</span><span class="p">:</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">WebListenCreate</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="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_LINUX_BOOL</span><span class="p">:</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">WebListenCreate</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">inPortInt</span><span class="o">=</span><span class="mi">1024</span><span class="p">)</span>
<span class="c1"># Restore DUMP</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">OrchestratorSessionRestore</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="c1"># Autoinit control panels starts with CP_</span>
<span class="n">lPyModules</span> <span class="o">=</span> <span class="n">Orchestrator</span><span class="o">.</span><span class="n">OrchestratorPySearchInit</span><span class="p">(</span><span class="n">inGlobPatternStr</span><span class="o">=</span><span class="s2">&quot;ControlPanel</span><span class="se">\\</span><span class="s2">CP_*.py&quot;</span><span class="p">,</span> <span class="n">inDefStr</span><span class="o">=</span><span class="s2">&quot;SettingsUpdate&quot;</span><span class="p">,</span> <span class="n">inDefArgNameGSettingsStr</span><span class="o">=</span><span class="s2">&quot;inGSettings&quot;</span><span class="p">,</span> <span class="n">inAsyncInitBool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># Call the orchestrator def</span>
<span class="n">Orchestrator</span><span class="o">.</span><span class="n">Orchestrator</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">inDumpRestoreBool</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
</div> </div>
<div class="section" id="id4"> <div class="section" id="id4">
<h2>Быстрая навигация<a class="headerlink" href="#id4" title="Ссылка на этот заголовок"></a></h2> <h2>Быстрая навигация<a class="headerlink" href="#id4" title="Ссылка на этот заголовок"></a></h2>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5. Права доступа пользователей UAC &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>5. Права доступа пользователей UAC &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Функции UIDesktop &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Функции UIDesktop &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3. Функции UIWeb &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>3. Функции UIWeb &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>4. Функции Keyboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>4. Функции Keyboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5. Функции Clipboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>5. Функции Clipboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>6. Функции Mouse &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>6. Функции Mouse &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>7. Функции Screen &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>7. Функции Screen &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>8. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>8. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>1. Описание &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Как использовать? &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Функции StopSafe &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>2. Функции StopSafe &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Обзор: исходный код модуля &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>Обзор: исходный код модуля &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Agent.__Agent__ &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Agent.__Agent__ &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -193,7 +212,10 @@
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">Processor</span> <span class="c1"># Processor Queue</span> <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">Processor</span> <span class="c1"># Processor Queue</span>
<span class="kn">from</span> <span class="nn">..Tools</span> <span class="kn">import</span> <span class="n">Usage</span> <span class="kn">from</span> <span class="nn">..Tools</span> <span class="kn">import</span> <span class="n">Usage</span>
<span class="kn">from</span> <span class="nn">..Tools</span> <span class="kn">import</span> <span class="n">License</span> <span class="kn">from</span> <span class="nn">..Tools</span> <span class="kn">import</span> <span class="n">License</span>
<span class="kn">from</span> <span class="nn">subprocess</span> <span class="kn">import</span> <span class="n">CREATE_NEW_CONSOLE</span> <span class="c1"># Flag to create new process in another CMD</span> <span class="kn">from</span> <span class="nn">pyOpenRPA.Tools</span> <span class="kn">import</span> <span class="n">CrossOS</span>
<span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_WINDOWS_BOOL</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">subprocess</span> <span class="kn">import</span> <span class="n">CREATE_NEW_CONSOLE</span> <span class="c1"># Flag to create new process in another CMD</span>
<span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_LINUX_BOOL</span><span class="p">:</span> <span class="k">pass</span>
<span class="kn">import</span> <span class="nn">os</span> <span class="kn">import</span> <span class="nn">os</span>
<span class="n">gSettings</span> <span class="o">=</span> <span class="kc">None</span> <span class="n">gSettings</span> <span class="o">=</span> <span class="kc">None</span>
@ -332,8 +354,11 @@
<span class="k">if</span> <span class="n">inCaptureBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span> <span class="k">if</span> <span class="n">inCaptureBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">lCMDProcess</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;cmd /c </span><span class="si">{</span><span class="n">inCMDStr</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span> <span class="n">lCMDProcess</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;cmd /c </span><span class="si">{</span><span class="n">inCMDStr</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span> <span class="k">else</span><span class="p">:</span>
<span class="n">lCMDProcess</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;cmd /c </span><span class="si">{</span><span class="n">inCMDStr</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_WINDOWS_BOOL</span><span class="p">:</span>
<span class="n">creationflags</span><span class="o">=</span><span class="n">CREATE_NEW_CONSOLE</span><span class="p">)</span> <span class="n">lCMDProcess</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;cmd /c </span><span class="si">{</span><span class="n">inCMDStr</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">creationflags</span><span class="o">=</span><span class="n">CREATE_NEW_CONSOLE</span><span class="p">)</span>
<span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_LINUX_BOOL</span><span class="p">:</span>
<span class="n">lCMDProcess</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;cmd /c </span><span class="si">{</span><span class="n">inCMDStr</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="n">lListenBool</span> <span class="o">=</span> <span class="kc">True</span> <span class="n">lListenBool</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">lMessageStr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">lOSCMDKeyStr</span><span class="si">}</span><span class="s2">: # # # # AGENT CMD Process has been STARTED # # # # &quot;</span> <span class="n">lMessageStr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">lOSCMDKeyStr</span><span class="si">}</span><span class="s2">: # # # # AGENT CMD Process has been STARTED # # # # &quot;</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="n">lMessageStr</span><span class="p">)</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="n">lMessageStr</span><span class="p">)</span>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Orchestrator.__Orchestrator__ &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Orchestrator.__Orchestrator__ &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -683,6 +702,24 @@
<span class="k">if</span> <span class="n">inForceBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span> <span class="n">lCMDStr</span> <span class="o">=</span> <span class="n">lCMDStr</span> <span class="o">+</span> <span class="s2">&quot; -Force&quot;</span> <span class="k">if</span> <span class="n">inForceBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span> <span class="n">lCMDStr</span> <span class="o">=</span> <span class="n">lCMDStr</span> <span class="o">+</span> <span class="s2">&quot; -Force&quot;</span>
<span class="n">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span><span class="o">=</span><span class="n">lCMDStr</span><span class="p">,</span><span class="n">inLogger</span><span class="o">=</span><span class="n">inLogger</span><span class="p">)</span></div> <span class="n">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span><span class="o">=</span><span class="n">lCMDStr</span><span class="p">,</span><span class="n">inLogger</span><span class="o">=</span><span class="n">inLogger</span><span class="p">)</span></div>
<div class="viewcode-block" id="OSRestart"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart">[документация]</a><span class="k">def</span> <span class="nf">OSRestart</span><span class="p">(</span><span class="n">inForceBool</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;L+,W+: Отправить сигнал на перезагрузку операционной системы. </span>
<span class="sd"> </span>
<span class="sd"> !ВНИМАНИЕ! Перезапуск будет принят, если учетная запись имеет полномочия на перезапуск на соответсвующей машине.</span>
<span class="sd"> </span>
<span class="sd"> :param inForceBool: True - принудительная перезагрузка; False - мягкая перезагрузка (дождаться окончания выполнения всех операций). По умолчанию True</span>
<span class="sd"> :param inLogger: Логгер, в который отправлять информацию о результате выполнения команды</span>
<span class="sd"> :return:</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">inLogger</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">inLogger</span> <span class="o">=</span> <span class="n">OrchestratorLoggerGet</span><span class="p">()</span>
<span class="k">if</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_WINDOWS_BOOL</span><span class="p">:</span>
<span class="n">lCMDStr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;shutdown -r&quot;</span>
<span class="k">if</span> <span class="n">inForceBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span> <span class="n">lCMDStr</span> <span class="o">=</span> <span class="n">lCMDStr</span> <span class="o">+</span> <span class="s2">&quot; -f&quot;</span>
<span class="k">elif</span> <span class="n">CrossOS</span><span class="o">.</span><span class="n">IS_LINUX_BOOL</span><span class="p">:</span>
<span class="n">lCMDStr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;reboot&quot;</span>
<span class="k">if</span> <span class="n">inForceBool</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span> <span class="n">lCMDStr</span> <span class="o">=</span> <span class="n">lCMDStr</span> <span class="o">+</span> <span class="s2">&quot; -f&quot;</span>
<span class="n">OSCMD</span><span class="p">(</span><span class="n">inCMDStr</span><span class="o">=</span><span class="n">lCMDStr</span><span class="p">,</span><span class="n">inLogger</span><span class="o">=</span><span class="n">inLogger</span><span class="p">)</span></div>
<div class="viewcode-block" id="OSCMD"><a class="viewcode-back" href="../../../Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSCMD">[документация]</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">[документация]</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">&quot;&quot;&quot;</span>
<span class="sd"> Отправить команду на выполнение на сессию, где выполняется Оркестратор.</span> <span class="sd"> Отправить команду на выполнение на сессию, где выполняется Оркестратор.</span>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.Clipboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.Clipboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.Keyboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.Keyboard &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.Mouse &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.Mouse &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.Screen &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.Screen &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.UIDesktop &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.UIDesktop &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Robot.UIWeb &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Robot.UIWeb &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -213,7 +232,7 @@
<span class="sd"> from pyOpenRPA.Robot import UIWeb</span> <span class="sd"> from pyOpenRPA.Robot import UIWeb</span>
<span class="sd"> UIWeb.BrowserChromeStart()</span> <span class="sd"> UIWeb.BrowserChromeStart()</span>
<span class="sd"> UIWeb.BrowserClose()</span> <span class="sd"> UIWeb.BrowserClose()</span>
<span class="sd"> </span>
<span class="sd"> :param inDriverExePathStr: Путь до компонента webdriver.exe, по умолчанию None (путь до webdriver.exe, который расположен в репозитории pyOpenRPA)</span> <span class="sd"> :param inDriverExePathStr: Путь до компонента webdriver.exe, по умолчанию None (путь до webdriver.exe, который расположен в репозитории pyOpenRPA)</span>
<span class="sd"> :type inDriverExePathStr: str, опционально</span> <span class="sd"> :type inDriverExePathStr: str, опционально</span>
<span class="sd"> :param inChromeExePathStr:Путь до компонента chrome.exe, по умолчанию None (путь до chrome.exe, который расположен в репозитории pyOpenRPA)</span> <span class="sd"> :param inChromeExePathStr:Путь до компонента chrome.exe, по умолчанию None (путь до chrome.exe, который расположен в репозитории pyOpenRPA)</span>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Tools.Debugger &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Tools.Debugger &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyOpenRPA.Tools.StopSafe &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>pyOpenRPA.Tools.StopSafe &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Алфавитный указатель &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>Алфавитный указатель &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>
@ -429,10 +448,10 @@
</li> </li>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">OrchestratorSessionSave() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a> <li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionSave">OrchestratorSessionSave() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li> </li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart">OrchestratorThreadStart() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a> <li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart">OrchestratorThreadStart() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li> </li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="Agent/02_Defs.html#pyOpenRPA.Agent.__Agent__.OSCMD">OSCMD() (в модуле pyOpenRPA.Agent.__Agent__)</a> <li><a href="Agent/02_Defs.html#pyOpenRPA.Agent.__Agent__.OSCMD">OSCMD() (в модуле pyOpenRPA.Agent.__Agent__)</a>
<ul> <ul>
@ -456,6 +475,8 @@
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSLogoff">OSLogoff() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a> <li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSLogoff">OSLogoff() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li> </li>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart">OSRemotePCRestart() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a> <li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart">OSRemotePCRestart() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li>
<li><a href="Orchestrator/02_Defs.html#pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart">OSRestart() (в модуле pyOpenRPA.Orchestrator.__Orchestrator__)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Портал документации pyOpenRPA &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>Портал документации pyOpenRPA &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

Binary file not shown.

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Содержание модулей Python &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>Содержание модулей Python &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

@ -5,6 +5,25 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Yandex.Metrika counter -->
<script async="" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(88079149, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/88079149" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Поиск &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title> <title>Поиск &mdash; документация pyOpenRPA v1.2.14 v1.2.14</title>

File diff suppressed because one or more lines are too long

@ -222,6 +222,11 @@ __Orchestrator__.OSCMD(inCMDStr = "git status", inRunAsyncBool=True)
| Отправить сигнал на удаленную перезагрузку операционной системы. | Отправить сигнал на удаленную перезагрузку операционной системы.
| |
| `OSRestart`([inForceBool, inLogger])
| L+,W+: Отправить сигнал на перезагрузку операционной системы.
|
| `Orchestrator`([inGSettings, …]) | `Orchestrator`([inGSettings, …])
| Инициализация ядра Оркестратора (всех потоков) | Инициализация ядра Оркестратора (всех потоков)
@ -1334,6 +1339,27 @@ Orchestrator.GSettingsKeyListValueOperatorPlus(
### pyOpenRPA.Orchestrator.__Orchestrator__.OSRestart(inForceBool=True, inLogger=None)
L+,W+: Отправить сигнал на перезагрузку операционной системы.
!ВНИМАНИЕ! Перезапуск будет принят, если учетная запись имеет полномочия на перезапуск на соответсвующей машине.
* **Параметры**
* **inForceBool** True - принудительная перезагрузка; False - мягкая перезагрузка (дождаться окончания выполнения всех операций). По умолчанию True
* **inLogger** Логгер, в который отправлять информацию о результате выполнения команды
* **Результат**
### pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator(inGSettings=None, inDumpRestoreBool=True, inRunAsAdministratorBool=True) ### pyOpenRPA.Orchestrator.__Orchestrator__.Orchestrator(inGSettings=None, inDumpRestoreBool=True, inRunAsAdministratorBool=True)
Инициализация ядра Оркестратора (всех потоков) Инициализация ядра Оркестратора (всех потоков)

@ -349,7 +349,7 @@ def Create(inModeStr="BASIC", inLoggerLevel = None):
lL.setLevel(logging.INFO) lL.setLevel(logging.INFO)
# create the logging file handler # create the logging file handler
mRobotLoggerFH = logging.FileHandler( mRobotLoggerFH = logging.FileHandler(
"Reports\\" + datetime.datetime.now().strftime("%Y_%m_%d") + ".log") os.path.normpath("Reports\\" + datetime.datetime.now().strftime("%Y_%m_%d") + ".log"))
mRobotLoggerFormatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') mRobotLoggerFormatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
mRobotLoggerFH.setFormatter(mRobotLoggerFormatter) mRobotLoggerFH.setFormatter(mRobotLoggerFormatter)
# add handler to logger object # add handler to logger object

@ -24,52 +24,6 @@ if __name__ == "__main__": # New init way - allow run as module -m PyOpenRPA.Orc
Также вы можете выполнить более тонкую настройку параметров Оркестратора. Ниже пример такой настройки: Также вы можете выполнить более тонкую настройку параметров Оркестратора. Ниже пример такой настройки:
```
import psutil, datetime, logging, os, sys
# Config settings
lPyOpenRPASourceFolderPathStr = (r"../Sources") # Path for test pyOpenRPA package
# Operations
if lPyOpenRPASourceFolderPathStr != "": sys.path.insert(0,os.path.abspath(os.path.join(lPyOpenRPASourceFolderPathStr))) # Path for test pyOpenRPA package
# Start import after config the pyOpenRPA folder
from pyOpenRPA.Orchestrator import SettingsTemplate # Import functionallity
from pyOpenRPA.Tools import CrossOS
from pyOpenRPA import Orchestrator # Import orchestrator main
#Run as administrator
if not Orchestrator.OrchestratorIsAdmin():
Orchestrator.OrchestratorRerunAsAdmin()
print(f"Orchestrator will be run as administrator!")
else:
gSettings = Orchestrator.GSettingsGet()
#gSettings = SettingsTemplate.Create(inModeStr="BASIC") # Create GSettings with basic configuration - no more config is available from the box - you can create own
Orchestrator.OrchestratorLoggerGet().setLevel(logging.INFO)
# TEST Add User ND - Add Login ND to superuser of the Orchestrator
lUACClientDict = SettingsTemplate.__UACClientAdminCreate__()
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="ND", inADStr="", inADIsDefaultBool=True, inURLList=[], inRoleHierarchyAllowedDict=lUACClientDict)
# TEST Add User IMaslov - Add Login IMaslov to superuser of the Orchestrator
Orchestrator.UACUpdate(inGSettings=gSettings, inADLoginStr="IMaslov", inADStr="", inADIsDefaultBool=True, inURLList=[])
# TEST Add Supertoken for the all access between robots
Orchestrator.UACSuperTokenUpdate(inGSettings=gSettings, inSuperTokenStr="1992-04-03-0643-ru-b4ff-openrpa52zzz")
# Add first interface!
if CrossOS.IS_WINDOWS_BOOL:
Orchestrator.WebListenCreate(inGSettings=gSettings)
if CrossOS.IS_LINUX_BOOL:
Orchestrator.WebListenCreate(inGSettings=gSettings, inPortInt=1024)
# Restore DUMP
Orchestrator.OrchestratorSessionRestore(inGSettings=gSettings)
# Autoinit control panels starts with CP_
lPyModules = Orchestrator.OrchestratorPySearchInit(inGlobPatternStr="ControlPanel\\CP_*.py", inDefStr="SettingsUpdate", inDefArgNameGSettingsStr="inGSettings", inAsyncInitBool=True)
# Call the orchestrator def
Orchestrator.Orchestrator(inGSettings=gSettings, inDumpRestoreBool=False)
```
## Быстрая навигация ## Быстрая навигация

Loading…
Cancel
Save