# EXAMPLE
-frompyOpenRPA.OrchestratorimportManagers
+frompyOpenRPA.OrchestratorimportOrchestratorlProcess=Orchestrator.Managers.Process(inAgentHostNameStr="PC-DESKTOP",inAgentUserNameStr="ND",inProcessNameWOExeStr="notepad",inStartCMDStr="notepad")
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
@@ -322,7 +410,7 @@ Manual restart will block scheduling execution. To return schedule execution use
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
@@ -337,18 +425,21 @@ Manual stop safe will block scheduling execution. To return schedule execution u
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
+
Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto.
+Will not start if STOP SAFE is now and don’t start auto is stopped manual now
Parameters
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
@@ -367,6 +459,17 @@ Manual stop safe will block scheduling execution. To return schedule execution u
Manual/Auto stop force. Force stop dont wait process termination - it just terminate process now.
+
Manual/Auto stop force. Force stop don’t wait process termination - it just terminate process now.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
Parameters
@@ -437,6 +540,17 @@ Manual stop safe will block scheduling execution. To return schedule execution u
@@ -447,7 +561,18 @@ Manual stop safe will block scheduling execution. To return schedule execution u
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
+
Parameters
+
+
inAgentHostNameStr – Agent hostname in any case. Required to identify Process
+
inAgentUserNameStr – Agent user name in any case. Required to identify Process
+
inProcessNameWOExeStr – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Manual/Auto restart force. Force restart dont wait process termination - it just terminate process now ant then start it.
Manual restart will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -760,14 +1007,14 @@ Manual restart will block scheduling execution. To return schedule execution use
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
Manual/Auto restart safe. Restart safe is the operation which send signal to process to terminate own work (send term signal to process). Then it run process. Managers.Process wait for the mStopSafeTimeoutSecFloat seconds. After that, if process is not terminated - self will StopForce it.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -775,26 +1022,30 @@ Manual stop safe will block scheduling execution. To return schedule execution u
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto.
+Will not start if STOP SAFE is now and don’t start auto is stopped manual now
Parameters
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
@@ -806,8 +1057,19 @@ Manual stop safe will block scheduling execution. To return schedule execution u
Manual/Auto stop force. Force stop don’t wait process termination - it just terminate process now.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
Parameters
@@ -876,8 +1138,19 @@ Manual stop safe will block scheduling execution. To return schedule execution u
Manual/Auto stop safe. Stop safe is the operation which send signal to process to terminate own work (send term signal to process). Managers.Process wait for the mStopSafeTimeoutSecFloat seconds. After that, if process is not terminated - self will StopForce it.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -885,7 +1158,18 @@ Manual stop safe will block scheduling execution. To return schedule execution u
inIsManualBool – Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
Returns
-
+
Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
Parameters
@@ -937,8 +1221,46 @@ Process instance has the following statuses:
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
+
Parameters
+
+
inAgentHostNameStr – Agent hostname in any case. Required to identify Process
+
inAgentUserNameStr – Agent user name in any case. Required to identify Process
+
inProcessNameWOExeStr – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
Manual/Auto stop force. Force stop dont wait process termination - it just terminate process now.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -1044,8 +1366,8 @@ Process instance has the following statuses:
Manual/Auto stop safe. Stop safe is the operation which send signal to process to terminate own work (send term signal to process). Managers.Process wait for the mStopSafeTimeoutSecFloat seconds. After that, if process is not terminated - self will StopForce it.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -1075,8 +1397,8 @@ Process instance has the following statuses:
Control panel has 3 events types:
- onRefreshHTML - run every n (see settings) second to detect changes in HTML control panel.
@@ -1371,7 +1693,7 @@ MathModule: math
Generate the hash the result output HTML. You can override this function if you know how to optimize HTML rendering.
TODO NEED TO MODIFY ServerSettings to work with Hash because of all defs are need do use Hash
@@ -1522,8 +1844,8 @@ TODO NEED TO MODIFY ServerSettings to work with Hash because of all defs are nee
# How to use
+# from pyOpenRPA.Tools import StopSafe
+# StopSafe.Init(inLogger=None)
+# StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
[docs]classProcess():""" Manager process, which is need to be started / stopped / restarted
@@ -197,6 +201,23 @@
- 3_STOP_SAFE_MANUAL - 4_STARTED - 5_STARTED_MANUAL
+
+
+ .. code-block:: python
+ lProcess = Orchestrator.Managers.Process(inAgentHostNameStr="PCNAME",inAgentUserNameStr="USER",
+ inProcessNameWOExeStr="notepad",inStartCMDStr="notepad",inStopSafeTimeoutSecFloat=3)
+ # Async way to run job
+ lProcess.ScheduleStatusCheckEverySeconds(inIntervalSecondsInt=5)
+ Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,
+ lProcess.StartCheck)
+ # OR (sync mode)
+ Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(lProcess.StartCheck)
+
+ How to use StopSafe on the robot side
+ .. code-block:: python
+ from pyOpenRPA.Tools import StopSafe
+ StopSafe.Init(inLogger=None)
+ StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe """mAgentHostNameStr=None
@@ -207,6 +228,24 @@
mStopSafeTimeoutSecFloat=NonemStatusStr=None# 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+ # MST - Manual Stop Trigger
+ mMSTdTSecFloat:float=None
+ mMSTdNInt=None
+ mMSTStartTimeList=[]
+
+ mAgentMuteBool=False# Mute any sends to agent while some action is perfomed
+
+
[docs]defMuteWait(self):
+ """
+ Internal def. Wait when class is apply to send new activities to the agent
+
+ :return:
+ """
+ lIntervalSecFloat=0.3
+ whileself.mAgentMuteBool==True:
+ time.sleep(lIntervalSecFloat)
+ returnNone
[docs]defManualStopTriggerSet(self,inMSTdTSecFloat:float,inMSTdNInt:int)->None:
+ """
+ Set ManualStopTrigger (MST) to switch to STOPPED MANUAL if specified count of start fails will be catched in specified time period
+
+ :param inMSTdTSecFloat: Time perios in seconds
+ :param inMSTdNInt: Counts of the start tries
+ :return: None
+ """
+
+ # MST - Manual Stop Trigger
+ self.mMSTdTSecFloat=inMSTdTSecFloat
+ self.mMSTdNInt=inMSTdNInt
+
+
+
[docs]defManualStopTriggerNewStart(self):
+ """
+ Log new start event. Check if it is applicable. Change status if ManualStop trigger criteria is applied
+
+ :return: # 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+ """
+ ifself.mMSTdTSecFloatisnotNoneandself.mMSTdNIntisnotNone:
+ lTimeNowSecFloat=time.time()
+ self.mMSTStartTimeList.append(lTimeNowSecFloat)# Append current time to MST list
+ # Remove old items from list
+ lMSTStartTimeList=[]
+ forlTimeItemSecFloatinself.mMSTStartTimeList:
+ ldTSecFloat=lTimeNowSecFloat-lTimeItemSecFloat
+ # Move to the new list if dT less
+ ifldTSecFloat<self.mMSTdTSecFloat:lMSTStartTimeList.append(lTimeItemSecFloat)
+ self.mMSTStartTimeList=lMSTStartTimeList# Set new list
+ # Check count in list
+ iflen(lMSTStartTimeList)>self.mMSTdNInt:
+ self.mStatusStr="1_STOPPED_MANUAL"
+ # Log info about process
+ 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.")
+ returnself.mStatusStr
+
+
[docs]defManualStopListClear(self)->None:
+ """
+ Clear the last start tries list.
+
+ :return: None
+ """
+ self.mMSTStartTimeList=[]
+
[docs]defManual2Auto(self)->str:""" Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
@@ -234,16 +319,24 @@
[docs]defStart(self,inIsManualBool=True)->str:"""
- Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
+ Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto.
+ Will not start if STOP SAFE is now and don't start auto is stopped manual now :param inIsManualBool: Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
+ ifinIsManualBool==False:self.ManualStopTriggerNewStart()# Set the time
+ if(self.mStatusStr=="1_STOPPED_MANUAL"or"STOP_SAFE"inself.mStatusStr)andinIsManualBool==False:
+ lStr=f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Process will not start because of stopped manual or stop safe is now."
+ __Orchestrator__.OrchestratorLoggerGet().warning(lStr)
+ returnself.mStatusStr# Send activity item to agent - wait resultifself.mStartPathStrisnotNone:lCMDStr=f"start {os.path.abspath(self.mStartPathStr)}"elifself.mStartCMDStrisnotNone:lCMDStr=f"start {self.mStartCMDStr}"#import pdb#pdb.set_trace()
+ self.MuteWait()
+ self.mAgentMuteBool=TruelActivityItemStart=__Orchestrator__.ProcessorActivityItemCreate(inDef="OSCMD",inArgDict={"inCMDStr":lCMDStr,"inSendOutputToOrchestratorLogsBool":False},inArgGSettingsStr="inGSettings")
@@ -257,6 +350,18 @@
self.mStatusStr="4_STARTED"# Log info about processself.StatusChangeLog()
+ self.mAgentMuteBool=False
+ returnself.mStatusStr
+
+
[docs]defStartCheck(self)->str:
+ """
+ Start program if auto stopped (0_STOPPED).
+
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+ """
+ self.MuteWait()
+ ifself.mStatusStr=="0_STOPPED":
+ self.Start(inIsManualBool=False)returnself.mStatusStr
[docs]defStopSafe(self,inIsManualBool=True)->str:
@@ -265,20 +370,63 @@
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto :param inIsManualBool: Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
- :return:
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
- pass
+ self.MuteWait()
+ self.mAgentMuteBool=True
+ # Send activity item to agent - wait result
+ lCMDStr=f'taskkill /im "{self.mProcessNameWOExeStr}.exe" /fi "username eq %USERNAME%"'
+ lActivityItemStart=__Orchestrator__.ProcessorActivityItemCreate(
+ inDef="OSCMD",inArgDict={"inCMDStr":lCMDStr,"inSendOutputToOrchestratorLogsBool":False},inArgGSettingsStr="inGSettings")
+ lGUIDStr=__Orchestrator__.AgentActivityItemAdd(inHostNameStr=self.mAgentHostNameStr,
+ inUserStr=self.mAgentUserNameStr,
+ inActivityItemDict=lActivityItemStart)
+ lStartResult=__Orchestrator__.AgentActivityItemReturnGet(inGUIDStr=lGUIDStr)
+ ifinIsManualBool==True:
+ self.mStatusStr="3_STOP_SAFE_MANUAL"
+ else:
+ self.mStatusStr="2_STOP_SAFE"
+ # Log info about process
+ self.StatusChangeLog()
+ # Interval check is stopped
+ lTimeStartFloat=time.time()
+ lIntervalCheckSafeStatusFLoat=15.0
+ while"SAFE"inself.mStatusStrand(time.time()-lTimeStartFloat)<self.mStopSafeTimeoutSecFloat:
+ self.StatusCheck()
+ time.sleep(lIntervalCheckSafeStatusFLoat)
+ if"SAFE"inself.mStatusStr:
+ # Log info about process
+ lL=__Orchestrator__.OrchestratorLoggerGet()
+ lL.info(f"Managers.Process ({self.mAgentHostNameStr}, {self.mAgentUserNameStr}, {self.mProcessNameWOExeStr}): Safe stop has been wait for {self.mStopSafeTimeoutSecFloat} sec. Now do the force stop.")
+ self.StopForce(inIsManualBool=inIsManualBool)
+ # Log info about process
+ self.StatusChangeLog()
+ self.mAgentMuteBool=False
+ returnself.mStatusStr
+
+
[docs]defStopSafeCheck(self)->str:
+ """
+ Stop safe program if auto started (4_STARTED).
+
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+ """
+ self.MuteWait()
+ ifself.mStatusStr=="4_STARTED":
+ self.StopSafe(inIsManualBool=False)
+ returnself.mStatusStr
[docs]defStopForce(self,inIsManualBool=True)->str:"""
- Manual/Auto stop force. Force stop dont wait process termination - it just terminate process now.
+ Manual/Auto stop force. Force stop don't wait process termination - it just terminate process now. Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto :param inIsManualBool: Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
+ self.MuteWait()
+ self.mAgentMuteBool=True# Send activity item to agent - wait result
- lCMDStr=f'taskkill /im "{self.mProcessNameWOExeStr}.exe" /fi "username eq %USERNAME%"'
+ lCMDStr=f'taskkill /F /im "{self.mProcessNameWOExeStr}.exe" /fi "username eq %USERNAME%"'lActivityItemStart=__Orchestrator__.ProcessorActivityItemCreate(inDef="OSCMD",inArgDict={"inCMDStr":lCMDStr,"inSendOutputToOrchestratorLogsBool":False},inArgGSettingsStr="inGSettings")lGUIDStr=__Orchestrator__.AgentActivityItemAdd(inHostNameStr=self.mAgentHostNameStr,
@@ -291,6 +439,18 @@
self.mStatusStr="0_STOPPED"# Log info about processself.StatusChangeLog()
+ self.mAgentMuteBool=False
+ returnself.mStatusStr
+
+
[docs]defStopForceCheck(self)->str:
+ """
+ Stop force program if auto started (4_STARTED).
+
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+ """
+ self.MuteWait()
+ ifself.mStatusStr=="4_STARTED":
+ self.StopForce(inIsManualBool=False)returnself.mStatusStr
[docs]defRestartSafe(self,inIsManualBool=True):
@@ -299,9 +459,10 @@
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto :param inIsManualBool: Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
- :return:
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
- pass
[docs]defRestartForce(self,inIsManualBool=True):"""
@@ -309,9 +470,10 @@
Manual restart will block scheduling execution. To return schedule execution use def Manual2Auto :param inIsManualBool: Default is True - Mark this operation as manual - StatusCheckStart/Stop will be blocked - only StatusCheck will be working. False - Auto operation
- :return:
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
- pass
[docs]defStatusCheckStart(self):""" Check process status and run it if auto stopped self.mStatusStr is "0_STOPPED"
- :return:
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
- pass
[docs]defStatusCheckStopForce(self):""" Check process status and auto stop force it if self.mStatusStr is 4_STARTED
- :return:
+ :return: Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL """
- pass
[docs]defScheduleStatusCheckEverySeconds(self,inIntervalSecondsInt=120):"""
- Some template def to work with schedule package. Configure schedule to start. Stop process in auto mode in all sele.
+ Run status check every interval in second you specify.
- :return:
+ :param inIntervalSecondsInt: Interval in seconds. Default is 120
+ :return: None """
- pass
-
+ # Check job in threaded way
+ __Orchestrator__.OrchestratorScheduleGet().every(inIntervalSecondsInt).seconds.do(__Orchestrator__.OrchestratorThreadStart,self.StatusCheck)
[docs]defProcessManualStopTriggerSet(inAgentHostNameStr:str,inAgentUserNameStr:str,inProcessNameWOExeStr:str,inMSTdTSecFloat:float,inMSTdNInt:int)->None:
+ """
+ Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
+ :param inAgentHostNameStr: Agent hostname in any case. Required to identify Process
+ :param inAgentUserNameStr: Agent user name in any case. Required to identify Process
+ :param inProcessNameWOExeStr: The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+ :param inMSTdTSecFloat: Time periods in seconds
+ :param inMSTdNInt: Counts of the start tries
+ :return: None
+ """
+ lProcess=ProcessGet(inAgentHostNameStr=inAgentHostNameStr,inAgentUserNameStr=inAgentUserNameStr,
+ inProcessNameWOExeStr=inProcessNameWOExeStr)
+ iflProcessisnotNone:lProcess.ManualStopTriggerSet(inMSTdTSecFloat=inMSTdTSecFloat,inMSTdNInt=inMSTdNInt)
+
+
+
[docs]defProcessManualStopListClear(inAgentHostNameStr:str,inAgentUserNameStr:str,inProcessNameWOExeStr:str)->None:
+ """
+ Clear the last start tries list.
+
+ :param inAgentHostNameStr: Agent hostname in any case. Required to identify Process
+ :param inAgentUserNameStr: Agent user name in any case. Required to identify Process
+ :param inProcessNameWOExeStr: The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+ :return: None
+ """
+ lProcess=ProcessGet(inAgentHostNameStr=inAgentHostNameStr,inAgentUserNameStr=inAgentUserNameStr,
+ inProcessNameWOExeStr=inProcessNameWOExeStr)
+ iflProcessisnotNone:lProcess.ManualStopListClear()
@@ -183,6 +187,7 @@
importsubprocess,json,psutil,time,os,win32security,sys,base64,logging,ctypes,copy#Get input argumentimportpickleimportinspect
+importschedulefrompartdimportServerfrom.importServer
@@ -329,6 +334,23 @@
#Send item in AgentDict for the futher data transmitionreturnAgentActivityItemAdd(inGSettings=inGSettings,inHostNameStr=inHostNameStr,inUserStr=inUserStr,inActivityItemDict=lActivityItemDict)
+
[docs]defAgentOSLogoff(inHostNameStr,inUserStr):
+ """
+ Logoff the agent user session
+
+ :return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
+ """
+ inGSettings=GSettingsGet()# Set the global settings
+ lCMDStr="shutdown /l"
+ lActivityItemDict={
+ "Def":"OSCMD",# def alias (look pyOpeRPA.Agent gSettings["ProcessorDict"]["AliasDefDict"])
+ "ArgList":[],# Args list
+ "ArgDict":{"inCMDStr":lCMDStr,"inRunAsyncBool":False,"inSendOutputToOrchestratorLogsBool":True,"inCMDEncodingStr":"cp1251"},# Args dictionary
+ "ArgGSettings":"inGSettings",# Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ "ArgLogger":None# Name of GSettings attribute: str (ArgDict) or index (for ArgList)
+ }
+ #Send item in AgentDict for the futher data transmition
+ returnAgentActivityItemAdd(inGSettings=inGSettings,inHostNameStr=inHostNameStr,inUserStr=inUserStr,inActivityItemDict=lActivityItemDict)
[docs]defOSLogoff():
+ """
+ Logoff the current orchestrator session
+ :return:
+ """
+ os.system("shutdown /l")
+
[docs]defOSCredentialsVerify(inUserStr,inPasswordStr,inDomainStr=""):##""" Verify user credentials in windows. Return bool
@@ -653,6 +683,38 @@
"""returnGSettingsGet().get("Logger",None)
+
[docs]defOrchestratorScheduleGet()->schedule:
+ """
+ Get the schedule (schedule.readthedocs.io) from the Orchestrator
+
+ Fro example you can use:
+
+ .. code-block:: python
+ # One schedule threaded
+ Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(lProcess.StatusCheckStart)
+
+ #New schedule thread # See def description Orchestrator.OrchestratorThreadStart
+ Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,lProcess.StatusCheckStart)
+
+ :return: schedule module. Example see here https://schedule.readthedocs.io/en/stable/examples.html
+ """
+ ifGSettingsGet().get("SchedulerDict",{}).get("Schedule",None)isNone:
+ GSettingsGet()["SchedulerDict"]["Schedule"]=schedule
+ returnGSettingsGet().get("SchedulerDict",{}).get("Schedule",None)
+
+
[docs]defOrchestratorThreadStart(inDef,*inArgList,**inArgDict):
+ """
+ Execute def in new thread and pass some args with list and dict types
+
+ :param inDef: Python Def
+ :param inArgList: args as list
+ :param inArgDict: args as dict
+ :return: threading.Thread object
+ """
+ lDefThread=threading.Thread(target=inDef,args=inArgList,kwargs=inArgDict)
+ lDefThread.start()
+ returnlDefThread
+
[docs]defOrchestratorIsAdmin():""" Check if Orchestrator process is running as administrator
@@ -2744,9 +2806,6 @@
ActivityItemDefAliasModulesLoad()#Инициализация настроечных параметров
- lDaemonLoopSeconds=gSettingsDict["SchedulerDict"]["CheckIntervalSecFloat"]
- lDaemonActivityLogDict={}#Словарь отработанных активностей, ключ - кортеж (<activityType>, <datetime>, <processPath || processName>, <processArgs>)
- lDaemonLastDateTime=datetime.datetime.now()gSettingsDict["ServerDict"]["WorkingDirectoryPathStr"]=os.getcwd()# Set working directory in g settings#Инициализация сервера (инициализация всех интерфейсов)
@@ -2797,69 +2856,97 @@
lProcessorMonitorThread.start()# Start the thread execution.iflL:lL.info("Processor monitor has been started")#Logging
- iflL:lL.info("Scheduler loop start")#Logging
- gDaemonActivityLogDictRefreshSecInt=10# The second period for clear lDaemonActivityLogDict from old items
- gDaemonActivityLogDictLastTime=time.time()# The second perioad for clean lDaemonActivityLogDict from old items
-
-
-
- whileTrue:
- try:
- lCurrentDateTime=datetime.datetime.now()
- #Циклический обход правил
- lFlagSearchActivityType=True
- # Periodically clear the lDaemonActivityLogDict
- iftime.time()-gDaemonActivityLogDictLastTime>=gDaemonActivityLogDictRefreshSecInt:
- gDaemonActivityLogDictLastTime=time.time()# Update the time
- forlIndex,lIteminenumerate(lDaemonActivityLogDict):
- iflItem["ActivityEndDateTime"]andlCurrentDateTime<=lItem["ActivityEndDateTime"]:
- pass
- # Activity is actual - do not delete now
- else:
- # remove the activity - not actual
- lDaemonActivityLogDict.pop(lIndex,None)
- lIterationLastDateTime=lDaemonLastDateTime# Get current datetime before iterator (need for iterate all activities in loop)
- # Iterate throught the activity list
- forlIndex,lIteminenumerate(gSettingsDict["SchedulerDict"]["ActivityTimeList"]):
- try:
- # Prepare GUID of the activity
- lGUID=None
- if"GUID"inlItemandlItem["GUID"]:
- lGUID=lItem["GUID"]
- else:
- lGUID=str(uuid.uuid4())
- lItem["GUID"]=lGUID
-
- #Проверка дней недели, в рамках которых можно запускать активность
- lItemWeekdayList=lItem.get("WeekdayList",[0,1,2,3,4,5,6])
- iflCurrentDateTime.weekday()inlItemWeekdayList:
- iflFlagSearchActivityType:
- #######################################################################
- #Branch 1 - if has TimeHH:MM
- #######################################################################
- if"TimeHH:MMStr"inlItem:
- #Вид активности - запуск процесса
- #Сформировать временной штамп, относительно которого надо будет проверять время
- #часовой пояс пока не учитываем
- lActivityDateTime=datetime.datetime.strptime(lItem["TimeHH:MMStr"],"%H:%M")
- lActivityDateTime=lActivityDateTime.replace(year=lCurrentDateTime.year,month=lCurrentDateTime.month,day=lCurrentDateTime.day)
- #Убедиться в том, что время наступило
- if(
- lActivityDateTime>=lDaemonLastDateTimeand
- lCurrentDateTime>=lActivityDateTime):
- # Log info about activity
- iflL:lL.info(f"Scheduler:: Activity list is started in new thread. Parameters are not available to see.")#Logging
- # Do the activity
- lThread=threading.Thread(target=Processor.ActivityListExecute,kwargs={"inGSettings":inGSettings,"inActivityList":lItem["ActivityList"]})
- lThread.start()
- lIterationLastDateTime=datetime.datetime.now()# Set the new datetime for the new processor activity
- exceptExceptionase:
- iflL:lL.exception(f"Scheduler: Exception has been catched in Scheduler module when activity time item was initialising. ActivityTimeItem is {lItem}")
- lDaemonLastDateTime=lIterationLastDateTime# Set the new datetime for the new processor activity
- #Уснуть до следующего прогона
- time.sleep(lDaemonLoopSeconds)
- exceptExceptionase:
- iflL:lL.exception(f"Scheduler: Exception has been catched in Scheduler module. Global error")
+ # Scheduler loop
+ lSchedulerThread=threading.Thread(target=__deprecated_orchestrator_loop__)
+ lSchedulerThread.daemon=True# Run the thread in daemon mode.
+ lSchedulerThread.start()# Start the thread execution.
+ iflL:lL.info("Scheduler (old) loop start")#Logging
+
+
+ # Schedule (new) loop
+ lScheduleThread=threading.Thread(target=__schedule_loop__)
+ lScheduleThread.daemon=True# Run the thread in daemon mode.
+ lScheduleThread.start()# Start the thread execution.
+ iflL:lL.info("Schedule module (new) loop start")#Logging
+
+
+def__schedule_loop__():
+ whileTrue:
+ schedule.run_pending()
+ time.sleep(3)
+
+# Backward compatibility below to 1.2.7
+def__deprecated_orchestrator_loop__():
+ lL=OrchestratorLoggerGet()
+ inGSettings=GSettingsGet()
+ lDaemonLoopSeconds=gSettingsDict["SchedulerDict"]["CheckIntervalSecFloat"]
+ lDaemonActivityLogDict={}# Словарь отработанных активностей, ключ - кортеж (<activityType>, <datetime>, <processPath || processName>, <processArgs>)
+ lDaemonLastDateTime=datetime.datetime.now()
+ gDaemonActivityLogDictRefreshSecInt=10# The second period for clear lDaemonActivityLogDict from old items
+ gDaemonActivityLogDictLastTime=time.time()# The second perioad for clean lDaemonActivityLogDict from old items
+ whileTrue:
+ try:
+ lCurrentDateTime=datetime.datetime.now()
+ # Циклический обход правил
+ lFlagSearchActivityType=True
+ # Periodically clear the lDaemonActivityLogDict
+ iftime.time()-gDaemonActivityLogDictLastTime>=gDaemonActivityLogDictRefreshSecInt:
+ gDaemonActivityLogDictLastTime=time.time()# Update the time
+ forlIndex,lIteminenumerate(lDaemonActivityLogDict):
+ iflItem["ActivityEndDateTime"]andlCurrentDateTime<=lItem["ActivityEndDateTime"]:
+ pass
+ # Activity is actual - do not delete now
+ else:
+ # remove the activity - not actual
+ lDaemonActivityLogDict.pop(lIndex,None)
+ lIterationLastDateTime=lDaemonLastDateTime# Get current datetime before iterator (need for iterate all activities in loop)
+ # Iterate throught the activity list
+ forlIndex,lIteminenumerate(gSettingsDict["SchedulerDict"]["ActivityTimeList"]):
+ try:
+ # Prepare GUID of the activity
+ lGUID=None
+ if"GUID"inlItemandlItem["GUID"]:
+ lGUID=lItem["GUID"]
+ else:
+ lGUID=str(uuid.uuid4())
+ lItem["GUID"]=lGUID
+
+ # Проверка дней недели, в рамках которых можно запускать активность
+ lItemWeekdayList=lItem.get("WeekdayList",[0,1,2,3,4,5,6])
+ iflCurrentDateTime.weekday()inlItemWeekdayList:
+ iflFlagSearchActivityType:
+ #######################################################################
+ # Branch 1 - if has TimeHH:MM
+ #######################################################################
+ if"TimeHH:MMStr"inlItem:
+ # Вид активности - запуск процесса
+ # Сформировать временной штамп, относительно которого надо будет проверять время
+ # часовой пояс пока не учитываем
+ lActivityDateTime=datetime.datetime.strptime(lItem["TimeHH:MMStr"],"%H:%M")
+ lActivityDateTime=lActivityDateTime.replace(year=lCurrentDateTime.year,
+ month=lCurrentDateTime.month,
+ day=lCurrentDateTime.day)
+ # Убедиться в том, что время наступило
+ if(
+ lActivityDateTime>=lDaemonLastDateTimeand
+ lCurrentDateTime>=lActivityDateTime):
+ # Log info about activity
+ iflL:lL.info(
+ f"Scheduler:: Activity list is started in new thread. Parameters are not available to see.")# Logging
+ # Do the activity
+ lThread=threading.Thread(target=Processor.ActivityListExecute,
+ kwargs={"inGSettings":inGSettings,
+ "inActivityList":lItem["ActivityList"]})
+ lThread.start()
+ lIterationLastDateTime=datetime.datetime.now()# Set the new datetime for the new processor activity
+ exceptExceptionase:
+ iflL:lL.exception(
+ f"Scheduler: Exception has been catched in Scheduler module when activity time item was initialising. ActivityTimeItem is {lItem}")
+ lDaemonLastDateTime=lIterationLastDateTime# Set the new datetime for the new processor activity
+ # Уснуть до следующего прогона
+ time.sleep(lDaemonLoopSeconds)
+ exceptExceptionase:
+ iflL:lL.exception(f"Scheduler: Exception has been catched in Scheduler module. Global error")# Backward compatibility below to 1.2.0def__deprecated_orchestrator_start__():
diff --git a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
index 44d66028..cdeff589 100644
--- a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
+++ b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
@@ -115,6 +115,10 @@
+"""
+# How to use
+# from pyOpenRPA.Tools import StopSafe
+# StopSafe.Init(inLogger=None)
+# StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
+"""
+
+
+importwin32con
+importwin32gui
+importos
+gIsSignalCloseBool=False
+gLogger=None
+gWindowTitleStr="PythonTerminator"# Title of the phantom window
+gWindowDescriptionStr="pyOpenRPA library for safe turn off the program (by send the WM_CLOSE signal from task kill)"# Description of the phantom window
+
+
[docs]defInit(inLogger=None):
+ """
+ Init the StopSafe module. After that you can use def IsStopSafe() to check if close signal has come.
+
+ :param inLogger: Logger to log messages about StopSafe
+ :return:
+ """
+ globalgLogger
+ globalgIsSignalCloseBool
+ gIsSignalCloseBool=False# Init default
+ gLogger=inLogger
+ importthreading
+ ifgLogger:gLogger.info(f"StopSafe: Init termination catch thread")
+ shutdown_thread=threading.Thread(target=_shutdown_monitor)
+ shutdown_thread.start()
[docs]defIsStopSafe():
+ """
+ Check if stop signal has come.
+
+ :return:
+ """
+ globalgIsSignalCloseBool# Init the global variable
+ returngIsSignalCloseBool# Return the result
+
+def_shutdown_monitor():
+ globalgIsSignalCloseBool# Init the global variable
+ globalgLogger
+ defwndproc(hwnd,msg,wparam,lparam):
+ ifmsg==win32con.WM_CLOSE:
+ win32gui.DestroyWindow(hwnd)
+ return0
+ elifmsg==win32con.WM_DESTROY:
+ win32gui.PostQuitMessage(0)
+ return0
+ returnwin32gui.DefWindowProc(hwnd,msg,wparam,lparam)
+ wc=win32gui.WNDCLASS()
+ wc.lpszClassName=gWindowTitleStr
+ wc.lpfnWndProc=wndproc
+ win32gui.RegisterClass(wc)
+ hwnd=win32gui.CreateWindow(gWindowTitleStr,gWindowDescriptionStr,
+ 0,0,0,0,0,0,0,0,None)
+ win32gui.PumpMessages()
+ gIsSignalCloseBool=True# WM_CLOSE message has come
+ ifgLogger:
+ gLogger.info(f"StopSafe: Program has catch VM_CLOSE signal - do safe exit")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/_sources/Orchestrator/06_Defs Managers.rst.txt b/Wiki/ENG_Guide/html/_sources/Orchestrator/06_Defs Managers.rst.txt
index 63b74345..060b8528 100644
--- a/Wiki/ENG_Guide/html/_sources/Orchestrator/06_Defs Managers.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/Orchestrator/06_Defs Managers.rst.txt
@@ -9,7 +9,7 @@ Process (General)
.. code-block:: python
# EXAMPLE
- from pyOpenRPA.Orchestrator import Managers
+ from pyOpenRPA.Orchestrator import Orchestrator
lProcess = Orchestrator.Managers.Process(inAgentHostNameStr="PC-DESKTOP",inAgentUserNameStr="ND", inProcessNameWOExeStr="notepad",inStartCMDStr="notepad")
@@ -34,8 +34,8 @@ ControlPanel (General)
.. code-block:: python
# EXAMPLE
- from pyOpenRPA.Orchestrator import Managers
- lCP = Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
+ from pyOpenRPA.Orchestrator import Orchestrator
+ lCP = Orchestrator.Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
.. automodule:: pyOpenRPA.Orchestrator.Managers.ControlPanel
diff --git a/Wiki/ENG_Guide/html/_sources/Tools/02_Defs.rst.txt b/Wiki/ENG_Guide/html/_sources/Tools/02_Defs.rst.txt
new file mode 100644
index 00000000..e12fb213
--- /dev/null
+++ b/Wiki/ENG_Guide/html/_sources/Tools/02_Defs.rst.txt
@@ -0,0 +1,25 @@
+####################################
+2. Defs StopSafe
+####################################
+
+How to use StopSafe on the robot side
+
+.. code-block:: python
+ from pyOpenRPA.Tools import StopSafe
+ StopSafe.Init(inLogger=None)
+ StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
+
+
+.. automodule:: pyOpenRPA.Tools.StopSafe
+ :members:
+ :autosummary:
+
+
+**********
+References
+**********
+
+`reStructuredText`_
+
+.. target-notes::
+.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
diff --git a/Wiki/ENG_Guide/html/_sources/index.rst.txt b/Wiki/ENG_Guide/html/_sources/index.rst.txt
index 9c27d257..01ad1aae 100644
--- a/Wiki/ENG_Guide/html/_sources/index.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/index.rst.txt
@@ -161,4 +161,11 @@ Guide content
:caption: AGENT
:glob:
- Agent/*
\ No newline at end of file
+ Agent/*
+
+.. toctree::
+ :maxdepth: 2
+ :caption: TOOLS
+ :glob:
+
+ Tools/*
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/genindex.html b/Wiki/ENG_Guide/html/genindex.html
index 9b477533..a9f24948 100644
--- a/Wiki/ENG_Guide/html/genindex.html
+++ b/Wiki/ENG_Guide/html/genindex.html
@@ -115,6 +115,10 @@
diff --git a/Wiki/ENG_Guide/html/searchindex.js b/Wiki/ENG_Guide/html/searchindex.js
index d4f8fe8f..e0dafbb8 100644
--- a/Wiki/ENG_Guide/html/searchindex.js
+++ b/Wiki/ENG_Guide/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["01_HowToInstall","02_RoadMap","03_Copyrights_Contacts","Agent/02_Defs","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToUse","Orchestrator/05_UAC","Orchestrator/06_Defs Managers","Robot/01_Robot","Robot/02_Defs","Robot/03_HowToUse","Robot/04_Dependencies","Studio/01_Studio","Studio/02_HowToUse","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["01_HowToInstall.rst","02_RoadMap.rst","03_Copyrights_Contacts.rst","Agent\\02_Defs.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToUse.rst","Orchestrator\\05_UAC.rst","Orchestrator\\06_Defs Managers.rst","Robot\\01_Robot.rst","Robot\\02_Defs.rst","Robot\\03_HowToUse.rst","Robot\\04_Dependencies.rst","Studio\\01_Studio.rst","Studio\\02_HowToUse.rst","index.rst"],objects:{"pyOpenRPA.Agent":{__Agent__:[3,0,0,"-"]},"pyOpenRPA.Agent.__Agent__":{OSCMD:[3,1,1,""],OSFileBinaryDataBase64StrAppend:[3,1,1,""],OSFileBinaryDataBase64StrCreate:[3,1,1,""],OSFileBinaryDataBase64StrReceive:[3,1,1,""],OSFileTextDataStrCreate:[3,1,1,""],OSFileTextDataStrReceive:[3,1,1,""],ProcessWOExeUpperUserListGet:[3,1,1,""]},"pyOpenRPA.Orchestrator":{__Orchestrator__:[5,0,0,"-"]},"pyOpenRPA.Orchestrator.Managers":{ControlPanel:[9,0,0,"module-1"],Process:[9,0,0,"module-0"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel":{ControlPanel:[9,2,1,"id20"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel.ControlPanel":{DataDictGenerate:[9,3,1,"id21"],InitJSJinja2StrGenerate:[9,3,1,"id22"],InitJSJinja2TemplatePathSet:[9,3,1,"id23"],Jinja2DataUpdateDictSet:[9,3,1,"id24"],OnInitJSDataDict:[9,3,1,"id25"],OnInitJSStr:[9,3,1,"id26"],OnRefreshHTMLDataDict:[9,3,1,"id27"],OnRefreshHTMLHashStr:[9,3,1,"id28"],OnRefreshHTMLStr:[9,3,1,"id29"],OnRefreshJSONDict:[9,3,1,"id30"],RefreshHTMLJinja2StrGenerate:[9,3,1,"id31"],RefreshHTMLJinja2TemplatePathSet:[9,3,1,"id32"]},"pyOpenRPA.Orchestrator.Managers.Process":{Process:[9,2,1,"id0"],ProcessGet:[9,1,1,"id13"],ProcessManual2Auto:[9,1,1,"id14"],ProcessStart:[9,1,1,"id15"],ProcessStatusCheck:[9,1,1,"id16"],ProcessStatusStrGet:[9,1,1,"id17"],ProcessStopForce:[9,1,1,"id18"],ProcessStopSafe:[9,1,1,"id19"]},"pyOpenRPA.Orchestrator.Managers.Process.Process":{Manual2Auto:[9,3,1,"id1"],RestartForce:[9,3,1,"id2"],RestartSafe:[9,3,1,"id3"],ScheduleWeekDay:[9,3,1,"id4"],Start:[9,3,1,"id5"],StatusChangeLog:[9,3,1,"id6"],StatusCheck:[9,3,1,"id7"],StatusCheckStart:[9,3,1,"id8"],StatusCheckStopForce:[9,3,1,"id9"],StatusCheckStopSafe:[9,3,1,"id10"],StopForce:[9,3,1,"id11"],StopSafe:[9,3,1,"id12"]},"pyOpenRPA.Orchestrator.Web":{Basic:[5,0,0,"-"]},"pyOpenRPA.Orchestrator.Web.Basic":{JSActivityListExecute:[5,1,1,""],JSProcessorActivityListAdd:[5,1,1,""]},"pyOpenRPA.Orchestrator.__Orchestrator__":{ActivityItemCreate:[5,1,1,""],ActivityItemDefAliasCreate:[5,1,1,""],ActivityItemDefAliasModulesLoad:[5,1,1,""],ActivityItemDefAliasUpdate:[5,1,1,""],ActivityItemHelperDefAutofill:[5,1,1,""],ActivityItemHelperDefList:[5,1,1,""],AgentActivityItemAdd:[5,1,1,""],AgentActivityItemExists:[5,1,1,""],AgentActivityItemReturnExists:[5,1,1,""],AgentActivityItemReturnGet:[5,1,1,""],AgentOSCMD:[5,1,1,""],AgentOSFileBinaryDataBase64StrAppend:[5,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[5,1,1,""],AgentOSFileBinaryDataBase64StrReceive:[5,1,1,""],AgentOSFileBinaryDataBytesCreate:[5,1,1,""],AgentOSFileSend:[5,1,1,""],AgentOSFileTextDataStrCreate:[5,1,1,""],AgentOSFileTextDataStrReceive:[5,1,1,""],AgentProcessWOExeUpperUserListGet:[5,1,1,""],GSettingsAutocleaner:[5,1,1,""],GSettingsGet:[5,1,1,""],GSettingsKeyListValueAppend:[5,1,1,""],GSettingsKeyListValueGet:[5,1,1,""],GSettingsKeyListValueOperatorPlus:[5,1,1,""],GSettingsKeyListValueSet:[5,1,1,""],OSCMD:[5,1,1,""],OSCredentialsVerify:[5,1,1,""],OSRemotePCRestart:[5,1,1,""],Orchestrator:[5,1,1,""],OrchestratorIsAdmin:[5,1,1,""],OrchestratorLoggerGet:[5,1,1,""],OrchestratorPySearchInit:[5,1,1,""],OrchestratorRerunAsAdmin:[5,1,1,""],OrchestratorRestart:[5,1,1,""],OrchestratorSessionRestore:[5,1,1,""],OrchestratorSessionSave:[5,1,1,""],ProcessDefIntervalCall:[5,1,1,""],ProcessIsStarted:[5,1,1,""],ProcessListGet:[5,1,1,""],ProcessStart:[5,1,1,""],ProcessStop:[5,1,1,""],ProcessorActivityItemAppend:[5,1,1,""],ProcessorActivityItemCreate:[5,1,1,""],ProcessorAliasDefCreate:[5,1,1,""],ProcessorAliasDefUpdate:[5,1,1,""],PythonStart:[5,1,1,""],RDPSessionCMDRun:[5,1,1,""],RDPSessionConnect:[5,1,1,""],RDPSessionDisconnect:[5,1,1,""],RDPSessionDublicatesResolve:[5,1,1,""],RDPSessionFileStoredRecieve:[5,1,1,""],RDPSessionFileStoredSend:[5,1,1,""],RDPSessionLogoff:[5,1,1,""],RDPSessionMonitorStop:[5,1,1,""],RDPSessionProcessStartIfNotRunning:[5,1,1,""],RDPSessionProcessStop:[5,1,1,""],RDPSessionReconnect:[5,1,1,""],RDPSessionResponsibilityCheck:[5,1,1,""],RDPTemplateCreate:[5,1,1,""],SchedulerActivityTimeAddWeekly:[5,1,1,""],Start:[5,1,1,""],StorageRobotExists:[5,1,1,""],StorageRobotGet:[5,1,1,""],UACKeyListCheck:[5,1,1,""],UACSuperTokenUpdate:[5,1,1,""],UACUpdate:[5,1,1,""],UACUserDictGet:[5,1,1,""],WebAuditMessageCreate:[5,1,1,""],WebCPUpdate:[5,1,1,""],WebListenCreate:[5,1,1,""],WebRequestParseBodyBytes:[5,1,1,""],WebRequestParseBodyJSON:[5,1,1,""],WebRequestParseBodyStr:[5,1,1,""],WebRequestParseFile:[5,1,1,""],WebRequestParsePath:[5,1,1,""],WebRequestResponseSend:[5,1,1,""],WebURLConnectDef:[5,1,1,""],WebURLConnectFile:[5,1,1,""],WebURLConnectFolder:[5,1,1,""],WebUserInfoGet:[5,1,1,""],WebUserIsSuperToken:[5,1,1,""],WebUserUACHierarchyGet:[5,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[11,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[11,1,1,""],PWASpecification_Get_PWAApplication:[11,1,1,""],PWASpecification_Get_UIO:[11,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[11,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[11,1,1,""],UIOSelectorUIOActivity_Run_Dict:[11,1,1,""],UIOSelector_Exist_Bool:[11,1,1,""],UIOSelector_FocusHighlight:[11,1,1,""],UIOSelector_GetChildList_UIOList:[11,1,1,""],UIOSelector_Get_BitnessInt:[11,1,1,""],UIOSelector_Get_BitnessStr:[11,1,1,""],UIOSelector_Get_UIO:[11,1,1,""],UIOSelector_Get_UIOActivityList:[11,1,1,""],UIOSelector_Get_UIOInfo:[11,1,1,""],UIOSelector_Get_UIOList:[11,1,1,""],UIOSelector_Highlight:[11,1,1,""],UIOSelector_SafeOtherGet_Process:[11,1,1,""],UIOSelector_SearchChildByMouse_UIO:[11,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[11,1,1,""],UIOSelector_TryRestore_Dict:[11,1,1,""],UIOSelectorsSecs_WaitAppear_List:[11,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[11,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"0643":7,"0_stop":9,"100":6,"101":5,"1050":[5,6],"120":[6,9],"1200":6,"121":5,"123":5,"127":5,"1680":[5,6],"1680x1050":[5,6],"1992":7,"1_stopped_manu":9,"2008":[0,16],"2012":0,"2019":16,"2021":1,"222":[4,6],"2999226":0,"2_stop_saf":9,"300":6,"3389":[5,6],"3600":6,"3720":[0,11,12],"3720python":12,"3_stop_safe_manu":9,"3rd":16,"4100115560661986":16,"412":5,"443":5,"4_start":9,"50000000":6,"5_started_manu":9,"600":6,"640x480":[5,6],"722":2,"77767775":5,"77777sdfsdf77777dsfdfsf77777777":5,"8081":6,"906":2,"\u0432":11,"\u0432\u0445\u043e\u0434\u043d\u043e\u0439":11,"\u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c":11,"\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c":11,"\u043a":11,"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":11,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":6,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":6,"\u043d\u0435":11,"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438":11,"\u043e\u0448\u0438\u0431\u043a\u0443":11,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":6,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c":11,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443":11,"\u043f\u0443\u0441\u0442\u043e\u0433\u043e":11,"\u0441\u043b\u0443\u0447\u0430\u0435":11,"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":6,"\u0441\u043f\u0438\u0441\u043a\u0430":11,"\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f":11,"\u0444\u0430\u0439\u043b":6,"\u0444\u043b\u0430\u0433":11,"\u0447\u0442\u043e":11,"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":11,"byte":5,"case":[3,4,5,6,9,11,12],"catch":[3,5,6],"class":[9,12],"default":[3,5,6,9,12,15],"float":[4,6,11],"function":[2,3,5,6,9,10,11,12],"import":[4,5,6,7,9,10,11,12],"int":[4,5,11,12],"long":2,"new":[2,4,5,6,7,9],"return":[3,5,6,9,11,12],"switch":13,"true":[3,5,6,7,8,9,10,11,12],"try":[5,11],"var":5,"while":5,Abs:6,Are:0,DOS:[3,5],EXE:[3,5],For:[0,5,12,15],Has:6,NOT:5,RUS:[1,16],The:[0,4,5,6,9,10],Then:9,USEFUL:5,USe:[6,8],Use:[2,5,7,9],Will:[5,6],With:9,__agent__:16,__agentactivityreturndictitemcreate__:6,__agentdictitemcreate__:6,__create__:6,__main__:7,__name__:7,__orchestrator__:16,__statisticsdict__:6,__uacclientadmincreate__:[6,7],_sessionlast_rdplist:5,_sessionlast_storagedict:5,a2o:5,abil:12,abl:16,about:[2,4,5,6,9],abov:5,abs:[3,5],absolut:[2,3,5,6,16],abspath:[5,7],access:[5,6,7,16],accessus:6,action:[12,16],activ:[4,5,6,8,9,11,12,15],activitydict:[6,8],activityitem:[3,5],activityitemcr:5,activityitemdefaliascr:5,activityitemdefaliasmodulesload:5,activityitemdefaliasupd:5,activityitemdict:5,activityitemhelperdefautofil:5,activityitemhelperdeflist:5,activitylist:6,activitylistappendprocessorqueuebool:[6,8],activitylistexecut:5,activitylistexecutebool:[6,8],activitynam:12,activitytimelist:6,actual:[5,16],add:[5,6,7,9,12],addhandl:6,addit:[5,16],address:[5,6],addressstr:6,admin:[5,8],admindict:[6,8],administr:[5,7],after:[4,5,6,7,9,11,15],agent:[6,9],agentactivityitemadd:5,agentactivityitemexist:5,agentactivityitemreturnexist:5,agentactivityitemreturnget:5,agentactivitylifetimesecfloat:6,agentactivityreturndict:6,agentactivityreturnlifetimesecfloat:6,agentconnectionlifetimesecfloat:6,agentdict:[5,6],agentfilechunkbytessizeint:6,agentfilechunkcheckintervalsecfloat:6,agentkeydict:[6,8],agentkeystr:[6,8],agentlimitlogsizebytesint:6,agentloopsleepsecfloat:6,agentoscmd:5,agentosfilebinarydatabase64strappend:5,agentosfilebinarydatabase64strcr:5,agentosfilebinarydatabase64strrec:5,agentosfilebinarydatabytescr:5,agentosfilesend:5,agentosfiletextdatastrcr:5,agentosfiletextdatastrrec:5,agentprocesswoexeupperuserlistget:5,algorithm:[4,16],algorythm:[4,6,16],alia:[4,5,6],aliasdefdict:[4,5,6],aliv:9,all:[4,5,6,7,8,9,11,12,16],allow:[5,6,7,8,9,10,12,16],alreadi:[5,12],also:5,amd64:[0,11,12],analyz:16,ani:[0,4,5,9,12,15,16],anoth:[5,11,15],anr:5,ant:9,apach:2,app:[3,5,11,16],appear:[5,11],append:[4,5,6,8,9,12],appli:[4,6],applic:[4,5,6,11,12],approach:12,architectur:16,archiv:[0,6],arg:[4,5,6],argdict:[4,5,6],arggset:[4,5,6],arglist:[4,5,6],arglogg:[4,5,6],argument:5,argvaluestr:5,articl:[1,16],artifici:12,asctim:6,assert:12,associ:5,asweigart:2,async:[4,5],asynchonu:4,attent:[3,4,5,6,8,12,15,16],attribut:[4,6,11,12],audit:5,authent:6,authentif:5,authtoken:6,authtokensdict:6,auto:[5,9],autoclean:[4,6],autoinit:[5,7],autom:[1,9,13,16],automat:[4,6,15],automationsearchmouseel:11,avail:[5,6,7,12],b4ff:7,b64decod:3,backend:[11,12],backward:[5,9],base64:[3,5],base:[4,5,16],base_wrapp:12,basehttprequesthandl:[5,9],basic:[4,6,7,16],beauti:[3,5],becaus:[4,5,9,12],been:[0,5,6,12,16],befor:[5,6],beginwith:[5,6],below:[4,5,15,16],best:[10,16],between:[4,5,6,7],big:[5,12,16],binari:[3,5],bit:[2,5,11,12],block:[5,6,9],bodi:[5,6],bool:[4,5,6,9,12],boppreh:2,both:[5,11,12],box:7,branch:0,browser:[6,15],bsd:2,bug:2,build:[2,16],built:0,busi:[4,5,12,16],button:[6,8],cabinetwclass:12,cach:6,calcfram:12,call:[4,5,6,7,9,11],callabl:5,can:[2,3,4,5,6,7,8,9,10,11,12,16],cancel:11,cant:4,captur:16,catchperiodsecfloat:6,central:4,certfilepempathstr:6,certif:5,chang:[6,9,16],check:[5,6,9,11,12,16],checkintervalsecfloat:6,child:[11,12],children:12,choos:11,chrome:12,chunk:6,class_nam:12,class_name_r:12,classif:12,claus:2,cleaner:5,clear:[5,6,12],click:[10,12],client:[5,6,9],clientrequesthandl:6,clipboard:5,close:[5,6,12],cmd:[3,5,6,8,15,16],cmdinputbool:[6,8],code:[4,5,6,9,12],collect:6,com:[0,2,12,13],come:[3,5,16],comma:4,command:[3,5,6,12],commerci:16,common:12,commun:5,compact:2,compani:[2,5,16],compat:[5,9,12],compex:4,compil:16,complet:[0,6],complex:4,compon:16,comput:[12,16],concept:16,condit:[11,12],config:[7,11],configur:[5,6,7,9,11,16],congratul:16,connect:[5,6],connectioncountint:6,connectionfirstqueueitemcountint:6,consist:4,consol:[6,12,15,16],consolid:[4,16],contact:16,contain:[5,6,9,11,12,15],content:[3,5,6],context:9,continu:5,control:[4,5,6,7,9,16],control_typ:12,control_type_r:12,controlpanel:[5,6,7,16],controlpaneldict:6,controlpanelinst:9,controlpanelkeyallowedlist:6,controlpanelrefreshintervalsecfloat:6,convent:12,cooki:6,copi:12,copyright:16,core:[1,4,16],cost:[1,16],cp1251:[3,5],cp866:[3,5],cp_:[5,7],cp_versioncheck:5,cpdict:6,cpkei:6,cpkeydict:[6,8],cpkeystr:[6,8],creat:[2,3,4,5,6,7,9,10,16],credenti:5,crosscheck:5,css:13,ctrl_index:12,current:[3,4,5,6,7,8,12],custom:[4,8,12],cv2:12,daemon:[3,5],dai:5,dashboard:5,data:[3,5,6,9],datadictgener:9,datasetlast:6,datetim:[6,7],deadlin:2,dear:16,debug:[5,6],decentr:4,decid:16,decod:3,def:[4,6,7,8,10,16],defaliastest:[4,6],defhelp:5,defnamestr:6,defsettingsupdatepathlist:6,depend:16,deploi:5,deprec:[5,6],depth:12,depth_end:12,depth_start:12,depth_stop:12,depthbit:[5,6],descipt:12,descript:[11,12,16],desktop:[1,4,5,6,9,11,16],desktopus:5,destin:[5,11],detail:[4,5,16],detect:[5,6,9,11,12],determin:[5,9],dev:5,develop:[5,12,16],dict:[3,5,6,9,11,12,16],dictionari:[4,6],differ:4,directori:[5,12],disappear:11,disc:5,disconnect:[5,6],distribut:16,divis:16,dll:16,doc:[12,16],document:[11,16],docutil:[3,5,11],dodict:6,doe:[5,15],doen:5,doesn:11,domain:6,domainadstr:6,domainupperstr:5,domainus:5,don:[3,5,6,8],done:1,dont:[5,6,8,9],doubl:15,download:0,dp0:12,draw:11,drive:[5,6],driver:12,dsd:[4,6],dumo:5,dump:[6,7],dumploglist:6,dumploglistcountint:6,dumploglisthashstr:6,dumploglistrefreshintervalsecfloat:6,duplic:5,durat:6,dynam:12,each:[5,6,12,16],earli:[3,5],edit:16,editor:15,elem:12,element:[11,12],elif:7,els:[3,5,6,7,9,11],empti:[5,6,8],enabl:[5,12],encapsul:[3,16],encod:[3,5],end:[4,5],eng:[1,16],enjoi:5,enterpris:16,enumer:9,enumeratedef:9,env:[6,9],enviro:12,environ:5,equal:[5,6],equalcas:[5,6],etc:5,even:5,event:9,everi:[5,6,9],everydai:5,exact:12,exampl:[3,4,5,6,8,9,10,11],except:[0,5],exe:[0,5,9,10,11,12],execut:[3,4,5,6,8,9,14,16],executebool:6,exist:[3,5,6,9,11,12],expens:16,expir:5,explor:[12,15],express:12,extens:[5,9,12],extra:5,extract:[5,12,16],facebook:2,fals:[3,5,6,7,9,11],fast:[2,16],featur:[4,5,6,8,16],feel:2,field:[5,6],file:[3,5,6],filebodybyt:5,filehandl:6,filemanag:6,filemod:6,filenamestr:5,fileurl:6,fileurlfilepathdict:6,fileurlfilepathdict_help:6,fill:[5,6],filter:5,find:[2,4,10,11,12],find_element_by_nam:12,find_window:[11,12],firefox:12,first:[7,12,16],flag:[3,5,6,9],flagaccess:6,flagaccessdefrequestglobalauthent:6,flagcredentialsask:6,flagdonotexpir:6,flagsessionisact:[5,6],flaguseallmonitor:[5,6],flase:[3,5],flexibl:4,focu:11,folder:[5,7,12,16],follow:[0,8,9,15,16],forc:[5,9,16],forget:6,format:[3,5,9],formatt:6,found:12,founder:16,framework:[11,12,13,16],free:[2,16],fridai:5,friendly_class_nam:12,friendly_class_name_r:12,from:[0,3,4,5,6,7,9,10,11,16],front:5,full:[5,6],fulli:12,fullscreen:[5,6],fullscreenbool:[6,8],fullscreenrdpsessionkeystr:6,functional:7,further:5,futher:9,garbag:5,gener:[5,6,16],get:[5,6,9,11,12,16],get_osbitnessint:11,getcontrol:11,getlogg:6,git:[0,5,6,8],github:2,gitlab:[0,1,2,12,16],give:[5,6,8],given:5,glob:5,global:[3,5,16],goe:4,going:16,good:[4,16],graphic:[12,16],great:16,group:[8,16],gset:[4,7,16],gsettingsautoclean:5,gsettingsdict:5,gsettingsget:[5,7],gsettingskeylistvalueappend:5,gsettingskeylistvalueget:5,gsettingskeylistvalueoperatorplu:5,gsettingskeylistvalueset:5,gui:[3,4,5,11,12,13,16],guid:[1,5,6],guidstr:[5,6],gurbag:6,habr:[1,16],handl:6,handlebar:13,handler:[5,6,9],hard:[5,6,8],has:[0,2,4,5,6,8,9,12],hash:9,have:5,height:[5,6],help:[0,2,5,16],helpfulli:11,here:[7,10,11,12,16],hex:[5,6,12],hidden:5,hiddenisorchestratoriniti:6,hierarchi:[5,12,15],highlight:[11,12,15],hightlight:15,homepag:2,host:[5,6],hostnam:[5,9],hostnameupperstr:6,how:[9,11,16],html:[1,3,5,9,11,12,16],htmlrenderdef:6,http:[0,2,3,4,5,6,9,11,12,13,16],human:5,identif:[5,12],identifi:[9,12],ignor:[5,6],ignorebool:[6,8],imag:16,imaslov:7,implement:12,inactionnam:11,inactivityitemdict:5,inactivitylist:5,inaddressstr:5,inadisdefaultbool:[5,7],inadloginstr:[5,7],inadstr:[5,7],inagentfilepathstr:5,inagenthostnamestr:9,inagentusernamestr:9,inaliasstr:5,inarg1str:5,inargdict:5,inarggset:5,inarggsettingsstr:5,inarglist:5,inargloggerstr:5,inargu:12,inargumentlist:11,inbackend:11,inbreaktriggerprocesswoexelist:5,incertfilepempathstr:5,incheckintervalsecfloat:5,incloseforcebool:5,includ:11,incmdencodingstr:[3,5],incmdstr:[3,5],incontenttypestr:5,incontrolpanelnamestr:9,incontrolspecificationarrai:11,incpkeystr:5,indatadict:9,indef:5,indefargdict:5,indefarggsettingsnamestr:5,indefarglist:5,indefargloggernamestr:5,indefargnamegsettingsstr:[5,7],indefnamestr:5,indefquerystr:5,indefstr:[5,7],indepthbitint:5,index:[4,5,6,11,12],indict:6,indomainstr:5,indumprestorebool:[5,7],inel:[10,11,12],inelementspecif:11,inencodingstr:[3,5],inexecuteinnewthreadbool:5,infiledatabase64str:[3,5],infiledatabyt:5,infiledatastr:[3,5],infilepathstr:[3,5],inflagforceclosebool:5,inflaggetabspathbool:5,inflagraiseexcept:[10,11,12],inflagwaitallinmo:11,info:[5,6,12],infolderpathstr:5,inforcebool:5,inform:[4,5,9],infrastructur:16,inglobpatternstr:[5,7],ingset:[3,4,5,7],ingsettingsclientdict:6,inguidremovebool:5,inguidstr:5,inhashkeystr:6,inheightpxint:5,inherit:12,inhostfilepathstr:5,inhostnamestr:5,inhoststr:[5,6],inhtmlrenderdef:5,inintervalasyncbool:5,inintervalsecfloat:5,inismanualbool:9,init:[4,5,6,7,9,11],initdatetim:6,initi:[5,6,9],initjsjinja2strgener:9,initjsjinja2templatepathset:9,injinja2dataupdatedict:9,injinja2templatepathstr:9,injinja2templaterefreshbool:9,injsinitgeneratordef:5,injsongeneratordef:5,inkeyfilepathstr:5,inkeylist:5,inkeystr:6,inkwargumentobject:11,inlogg:[5,6],inloggerlevel:6,inloginstr:[5,6],inmatchtypestr:5,inmessagestr:5,inmethodstr:5,inmodestr:[4,5,6,7],inmodulepathstr:5,inoperationcodestr:5,inorchestratorfilepathstr:5,inpasswordstr:[5,6],inpathstr:5,inportint:5,inportstr:[5,6],inprocessnamewexestr:5,inprocessnamewoexelist:[3,5],inprocessnamewoexestr:[5,9],inrdpfilepathstr:5,inrdpsessionkeystr:[5,6],inrdptemplatedict:5,inrefreshhtmljinja2templatepathstr:9,inrequest:[5,9],inresponestr:5,inreturn:6,inrobotnamestr:[5,9],inrolehierarchyalloweddict:[5,7],inrolekeylist:5,inrowcountint:6,inrunasadministratorbool:5,inrunasyncbool:[3,5],insendoutputtoorchestratorlogsbool:[3,5],insert:[5,7],inserverkeystr:5,inshareddrivelist:5,inspecificationlist:[10,11,12],inspecificationlistlist:11,instal:16,instanc:[4,5,6,9,11,12],instartcmdstr:9,instartpathstr:9,instopprocessnamewoexestr:5,instopsafetimeoutsecfloat:9,insupertokenstr:[5,7],intellig:12,interact:[4,5,11],interest:5,interfac:[4,5,7,12,16],internet:15,interpret:4,interv:[5,6,9],intervalsecfloat:6,inthreadbool:5,intimehhmmstr:5,inuioselector:11,inurllist:[5,7],inurlstr:5,inusebothmonitorbool:5,inusernamestr:5,inuserstr:5,invalu:5,inwaitsec:11,inweekdaylist:5,inwidthpxint:5,is_en:12,is_vis:12,islistenbool:6,isresponsiblebool:5,issu:2,it4busi:2,it4busin:2,item:[4,5,6,11,12],iter:[5,6],ivan:16,ivanmaslov:2,java:9,javascript:5,jinja2:9,jinja2dataupdatedictset:9,join:[5,7],jsactivitylistexecut:5,jsinitgeneratordef:6,json:[3,4,5,6,9],jsongeneratordef:6,jsprocessoractivitylistadd:5,jsrender:13,jsview:13,just:[9,12],kb2999226:0,keep:4,kei:[5,6,9,12],keyboard:[2,13,16],keyfilepathstr:6,keystr:6,kill:5,killer:16,know:[4,9],known:16,kwarg:4,lactivityitem:5,laliasstr:5,last:6,later:5,latest:12,launch:5,lcp:9,lcpmanag:9,leaflet:[1,16],left:4,len:6,less:[1,16],let:16,level:[12,16],levelnam:6,lib:12,librari:12,licens:16,life:6,lifetim:6,lifetimerequestsecfloat:6,lifetimesecfloat:6,light:4,like:[4,16],line:12,link:[4,5,6,16],linkedin:2,list:[3,4,5,6,11,12,16],listen:5,listendict:6,listread:6,litem:12,littl:8,llogger:5,lnotepadokbutton:10,load:[5,6,9],local:5,localhost:6,locat:5,lof:9,log:[3,5,6,7,8,16],logger:[5,6],loggerdumploghandleradd:6,loggerhandlerdumploglist:6,login:[5,6,7],logoff:[5,6],logout:16,logviewerbool:[6,8],lol:15,look:[4,5,6,8,15,16],lookmachinescreenshot:6,loop:[6,12],low:12,lowercas:6,lprocess:9,lprocessisstartedbool:5,lprocesslist:5,lpymodul:7,lpyopenrpa_settingsdict:11,lpyopenrpasourcefolderpathstr:7,lrdpitemdict:5,lrdptemplatedict:5,lrequest:5,lresult:6,lresultdict:[5,6],luacclientdict:7,lwebauditmessagestr:5,lxml:13,mac:16,machin:[0,5,6,16],machina:6,magenthostnamestr:6,magentusernamestr:6,mail:2,main:[4,5,6,7,9,12],maintain:16,make:12,makedir:6,manag:[5,6,16],managersprocessdict:6,mani:[2,4,11,16],manipul:[5,8,16],manual2auto:9,manual:9,mark:9,markdown:[1,16],maslov:16,master:0,match:12,matchtyp:6,math:9,mathmodul:9,max:6,maxim:11,maximum:12,mayb:5,mechan:4,mega:[4,8],megafind:2,memori:5,menu:10,merg:5,messag:[5,6],method:[6,9,12],methodmatchurl:6,methodmatchurlbeforelist:6,methodolog:2,mhandlerdumploglist:6,microsoft:[0,12],minim:11,minut:6,miss:12,mit:[2,16],mmstr:6,mode:[9,15],model:[2,12],modifi:9,modul:[4,5,6,7],modulenamestr:5,moduletocal:5,mondai:5,monitor:5,more:[4,6,7,9,12],mous:16,mprocessnamewoexestr:6,mrobotlogg:6,mrobotloggerfh:6,mrobotloggerformatt:6,mrobotnamestr:9,mstatusstr:9,mstopsafetimeoutsecfloat:9,must:6,name:[4,5,6,9,11,12],namewoexestr:5,namewoexeupperstr:5,need:[0,2,3,4,5,6,7,8,9,11,12,16],nest:5,net:[3,5,11],never:5,newkeydict:5,newkeylist:5,newvalu:5,next:[5,9,12],non:16,none:[3,4,5,6,9,10,11,12],notat:[11,12],notepad:[3,5,9,10,11,12],noth:5,nothingbool:[6,8],now:[5,6,9,11],nul:12,object:[4,5,6,11,12,16],occupi:5,ocr:12,octet:5,off:[6,8],old:[5,6,7,11],onc:[9,11],one:[6,8],oninitj:9,oninitjsdatadict:9,oninitjsstr:9,onli:[0,3,5,6,8,9,11,12,16],onlin:16,onrefreshhtml:9,onrefreshhtmldatadict:9,onrefreshhtmlhashstr:9,onrefreshhtmlstr:9,onrefreshjson:9,onrefreshjsondict:9,op_code_1:5,open:[1,6,15,16],opencv:[0,13,16],openrpa52zzz:7,openrpa:[0,6],openrpa_32:15,openrpa_64:15,openrpaorchestr:12,openrparesourceswpy32:12,openrparesourceswpy64:12,openrparobotguix32:11,opensourc:16,oper:[0,5,7,9,16],opera:12,operatormodul:9,optim:9,option:[5,6,8,12],orc:[5,6,8],orch:6,orchestr:[3,6,7,9],orchestratorisadmin:[5,7],orchestratorloggerget:5,orchestratormain:12,orchestratormodul:9,orchestratorpysearchinit:[5,7],orchestratorrerunasadmin:[5,7],orchestratorrestart:5,orchestratorsessionrestor:[5,7],orchestratorsessionsav:5,orchestratorstart:6,order:[4,12,15],org:[2,12],oscmd:[3,5],oscredentialsverifi:5,osfilebinarydatabase64strappend:3,osfilebinarydatabase64strcr:3,osfilebinarydatabase64strrec:3,osfiletextdatastrcr:3,osfiletextdatastrrec:3,osremotepcrestart:[5,6],other:[11,12,16],our:12,out:5,outargu:12,outlin:11,output:[3,5,6,9],outstr:5,over:9,overrid:9,overwrit:6,own:[4,7,9,12,16],packag:[0,7,9,10,16],page:[5,6,8,9,10],page_sourc:12,pai:[4,6],paid:[1,16],panel:[5,6,7,8,9,15],param:[3,5,9],paramet:[3,4,5,6,9,11],parent:[11,12,15],pars:5,parti:16,pass:[5,6,9],password:[5,6],path:[3,5,6,7,12],paus:12,pdb:6,pdf:[1,16],pem:5,perfom:[12,16],perform:16,period:[5,6],perman:5,phone:4,pickl:5,pid:5,pil:13,pixel:[5,6],plan:5,platform:16,pleas:[5,16],plu:5,port:[5,6],portabl:[0,12],portint:6,possibl:16,post:[5,6],postfix:5,power:[5,16],powershel:[5,6],practic:[8,16],prefer:2,prepar:[5,9],previou:[5,9],print:[7,12],privat:5,procedur:5,process:[3,4,6,7,11,12,14,16],processbit:11,processdefintervalcal:5,processdetaillist:5,processget:9,processisstart:5,processlistget:5,processmanual2auto:9,processnam:5,processor:[3,6,8,16],processoractivityitemappend:5,processoractivityitemcr:5,processoraliasdefcr:5,processoraliasdefupd:5,processordict:6,processstart:[5,9],processstatuscheck:9,processstatusstrget:9,processstop:5,processstopforc:9,processstopsaf:9,processwoexelist:5,processwoexeupperlist:5,processwoexeupperuserlistget:3,product:12,program:[5,6,10],progress:1,project:[4,16],properti:[8,16],protocol:4,prototyp:6,provid:[12,16],psutil:[7,13],pull:[6,8],purpos:2,push:6,pwa:12,pwaspecif:12,pwaspecification_get_pwaappl:11,pwaspecification_get_uio:11,pyautogui:[2,12,13,16],pycon:12,pymupdf:13,pyopenrpa:[0,1,2,4,6,7,8,9,10,11,12,14],pyopenrpa_uidesktopx32:11,pyopenrpa_uidesktopx64:11,pyopenrpadict:[6,8],pypathstr:5,python32fullpath:11,python32processnam:11,python64fullpath:11,python64processnam:11,python:[0,4,10,11,13,15,16],pythonstart:5,pywin32:[2,13],pywinauto:[2,11,12,13],queri:5,queue:[1,4,5,6,8],queuelist:6,r01:6,r01_integrationorderout:6,r01_orchestratortorobot:6,rais:5,rdp:[4,5,6,8],rdpactiv:6,rdpkei:5,rdpkeydict:[6,8],rdpkeystr:[6,8],rdplist:[5,6],rdpsession:16,rdpsessioncmdrun:5,rdpsessionconnect:[5,6],rdpsessiondisconnect:[5,6],rdpsessiondublicatesresolv:5,rdpsessionfilestoredreciev:5,rdpsessionfilestoredsend:5,rdpsessionkei:6,rdpsessionkeystr:6,rdpsessionlogoff:5,rdpsessionmonitorstop:5,rdpsessionprocessstartifnotrun:5,rdpsessionprocessstop:5,rdpsessionreconnect:[5,6],rdpsessionresponsibilitycheck:5,rdptemplatecr:5,read:[3,5,6],readi:0,readthedoc:12,receiv:5,reciev:[5,6],recognit:16,reconnect:[5,6],reconnectbool:[6,8],recoverydict:6,recurs:12,reestr_otgruzok:6,refer:16,refresh:[6,9],refreshhtmljinja2strgener:9,refreshhtmljinja2templatepathset:9,refreshsecond:6,regener:5,regular:12,rel:[5,6],reliabl:[2,16],reload:9,rememb:[6,8],remot:[5,6,16],remov:[5,6,9],render:[9,15],renderfunct:6,renderrobotr01:6,replac:5,report:6,reqir:4,request:[5,6,9,13],requestinst:9,requesttimeoutsecfloat:6,requir:[5,9,16],rerun:5,resolut:[5,6],resourc:[0,11,12,16],respons:[5,6],responsecontenttyp:6,responsedefrequestglob:6,responsefilepath:6,responsefolderpath:6,responsibilitycheckintervalsec:6,restart:[5,6,8,9],restartforc:9,restartorchestr:6,restartorchestratorbool:[6,8],restartorchestratorgitpullbool:[6,8],restartpcbool:[6,8],restartsaf:9,restor:[5,7,11],restrict:16,restructuredtext:[3,5,11],result:[5,6,8,9,11,12],retart:5,returnbool:6,returnedbydatetim:6,rich_text:12,rich_text_r:12,right:[5,16],roadmap:16,robot:[4,5,6,7,8,10,11],robot_r01:6,robot_r01_help:6,robotlist:6,robotrdpact:[5,6],rolehierarchyalloweddict:6,root:[5,6],row:6,rpa01:5,rpa:[1,5,6,10,16],rpa_99:5,rpatestdirtest:5,rst:[3,5,11],ruledomainuserdict:6,rulemethodmatchurlbeforelist:6,run:[0,3,5,6,7,9,11,16],russia:[2,16],russian:16,safe:[3,5,9,11,16],safeti:5,same:11,save:[5,9],schedul:[4,9,16],scheduleractivitytimeaddweekli:5,schedulerdict:6,scheduleweekdai:9,scopesrcul:6,screen:[5,6,16],screenshot:[0,6,8,16],screenshotviewerbool:[6,8],script:[4,9,16],search:[5,16],sec:[5,6],second:[5,6,9,11,12],section:[5,11],secur:5,see:[0,5,6,7,9,10,11,16],sele:9,select:11,selector:[11,12,15,16],selenium:[2,13,16],self:9,semant:[2,13],send:[3,5,6,8,9,16],send_kei:12,sensit:5,sent:[5,6],sequenc:4,server:[0,3,4,5,6,8,9,15,16],serverdict:6,serverinst:6,serverset:[6,9],serverthread:6,sesion:[5,6],session:[3,5,6,16],sessionguidstr:6,sessionhex:[5,6],sessionisignoredbool:[5,6],sessioniswindowexistbool:[5,6],sessioniswindowresponsiblebool:[5,6],set:[3,5,6,7,8,9,11,16],set_trac:6,setformatt:6,setlevel:6,settingsinit:11,settingstempl:[4,6,7],settingsupd:[5,7],setup:6,sever:[4,12,16],share:5,shareddrivelist:[5,6],shell:[5,16],should:[6,9],show:[6,8],side:[5,6,8,9],signal:[5,9],simplifi:12,sinc:[6,16],singl:4,singleton:[3,5],size:6,skype:2,sleep:[6,12],socket:4,softwar:2,solut:[0,12,16],some:[2,4,5,6,8,9,16],soon:[1,16],sorri:16,sort:5,sourc:[3,4,5,7,9,11,16],sourceforg:[3,5,11],space:4,special:[5,6],specialist:2,specif:12,specifi:5,sphinx:[4,16],ssl:5,standart:6,start:[0,3,5,6,7,9,12,15,16],statu:[5,9],status:9,statuschangelog:9,statuscheck:9,statuscheckstart:9,statuscheckstopforc:9,statuscheckstopsaf:9,statuscheckstorforc:9,stdout:[6,7],stop:[5,9,12,16],stopforc:9,stopsaf:9,storag:[6,16],storagedict:6,storagerobotdict:9,storagerobotexist:5,storagerobotget:[5,9],store:6,str:[4,5,6,9,11,12],stream:5,streamhandl:6,strftime:6,string:[3,5,11],struct:6,structur:[4,5,6],studio:[4,14,15],subprocess:12,success:5,successfulli:[0,5,6,12,16],sundai:5,supertoken:[5,7],superus:[5,7],supetoken:5,supplement:12,support:[0,4,7,9,12,15,16],symbol:4,sync:[4,5],synchroni:5,sys:[5,6,7,12],system:16,tablet:4,task:2,technic:[4,6],technicalsessionguidcach:6,telegram:2,templat:[9,16],term:9,termin:9,terminolog:12,tesseract:13,test2:6,test:[3,5,6,7,9],testcontrolpanel:9,testcontrolpanelkei:6,testdef:5,testdefalia:5,testdir:5,testdirtest:5,testrdp:6,testttt:9,text:[3,5,12,15],than:[4,6,11],thank:[2,16],theori:16,thi:[3,5,6,8,9,12,16],thing:9,thought:5,thread:[4,5,6,8],threadidint:6,thursdai:5,thx:12,time:[5,6,9,12,16],timehh:6,titl:[10,11,12],title_r:12,todo:[5,6,9],token:5,tokendatetim:6,too:[5,6,8],tool:[4,6,12,15],top:11,tor:16,track:5,transmiss:5,transmit:[3,4,5,6,9],tree:16,trigger:[5,6],triggercountint:6,ttt:[4,6],turn:[6,8],turpl:4,tutori:[1,16],txt:5,type:[5,6,7,9],uac:16,uacclientcheck:9,uackeylistcheck:5,uacsupertokenupd:[5,7],uacupd:[5,7],uacuserdictget:[5,9],uia:[11,12],uidesktop:[10,11],uio:[11,15,16],uioactiv:[11,12],uioei:12,uioinfo:12,uioselector:11,uioselector_exist_bool:11,uioselector_focushighlight:[11,12],uioselector_get_bitnessint:11,uioselector_get_bitnessstr:11,uioselector_get_uio:[10,11,12],uioselector_get_uioactivitylist:11,uioselector_get_uioinfo:11,uioselector_get_uiolist:11,uioselector_getchildlist_uiolist:11,uioselector_highlight:11,uioselector_safeotherget_process:11,uioselector_searchchildbymouse_uio:11,uioselector_searchchildbymouse_uiotre:11,uioselector_tryrestore_dict:11,uioselectorsecs_waitappear_bool:11,uioselectorsecs_waitdisappear_bool:11,uioselectorssecs_waitappear_list:11,uioselectorssecs_waitdisappear_list:11,uioselectoruioactivity_run_dict:11,uiotre:12,under:16,understand:8,unicodelab:[0,2,12],univers:4,unix:16,unzip:0,updat:[5,6],upper:[3,5,6,9],url:[5,6],urllist:6,usag:[5,9,10,12],use:[0,3,4,5,6,8,9,11,16],used:5,useful:12,user:[3,4,5,6,7,9,11,12,16],user_99:5,user_pass_her:5,useradstr:6,userinfodict:9,usernam:5,usernameupperstr:5,userrpa:5,useruaccheckdef:9,useruacdict:9,userupperstr:6,using:[5,12,16],utf:[3,5],util:[6,11,16],valu:[5,6,11],variant:5,ver:[5,12],veri:[2,5],verifi:5,version:[5,9,12,15],versionstr:6,via:[2,5,9],video:12,viewer:[6,8,16],virtual:6,visibl:12,vision:[12,16],vista:0,visual:16,vms:5,wai:[5,7,12,16],wait:[3,5,9,11,12,15],want:[4,6,8,9,15,16],warn:[6,7],warningexecutionmorethansecfloat:6,web:[1,4,6,9,16],webaudit:5,webauditmessagecr:5,webcpupd:5,webdriv:12,weblistencr:[5,7],webrequestparsebodybyt:5,webrequestparsebodyjson:5,webrequestparsebodystr:5,webrequestparsefil:5,webrequestparsepath:5,webrequestresponsesend:5,weburlconnectdef:5,weburlconnectfil:5,weburlconnectfold:5,webuserinfoget:[5,9],webuserissupertoken:5,webuseruachierarchyget:5,wednesdai:5,week:5,weekdai:[5,6],weekdaylist:6,well:16,were:16,whatsapp:2,when:[4,5,6,9,11,15],where:[3,5,12,15],which:[2,4,5,6,9,10,11,12,16],who:6,why:4,width:[5,6],wiki:12,win32:[11,16],win32api:13,win:5,window:[0,3,5,6,11,13,16],winpython:2,without:[0,3,5,6,9,16],wmi:13,work:[5,6,8,9,12,16],workingdirectorypathstr:6,world:16,wpy32:[0,11,12],wpy64:[0,11,12],wrapper:11,write:[2,3,4,12,16],www:[2,12,13],x32:[0,11,13,15,16],x64:[0,5,11,13,15,16],xlsx:6,yoomonei:16,you:[0,2,3,4,5,6,7,8,9,10,11,12,16],your:[0,2,6,9,11,12],zip:0},titles:["1. How to install","2. Roadmap","3. Copyrights & Contacts","2. Defs","1. Description","2. Defs","3. gSettings Template","4. How to use","5. UAC - User Access Control","6. Defs Managers","1. Description","2. Defs","3. How to use","4. Dependencies","1. Description","2. How to use","Welcome to pyOpenRPA\u2019s wiki"],titleterms:{The:[12,15,16],Use:12,__agent__:3,__orchestrator__:5,about:[8,12,16],access:[8,12],action:15,agent:[3,5,16],app:12,architectur:4,autom:12,basic:5,button:15,captur:12,check:0,choos:15,click:15,cmd:12,compon:[2,4],concept:4,configur:4,contact:2,content:[15,16],control:8,controlpanel:9,copyright:2,creat:12,ctrl:15,def:[3,5,9,11],definit:12,depend:[2,13],descript:[4,10,14,15],desktop:12,detail:9,dict:[4,8],dll:12,donat:16,exampl:12,execut:12,expand:15,extract:15,file:12,founder:2,from:12,gener:9,global:4,group:5,gset:[5,6],gui:15,guid:16,has:16,hold:15,hover:15,how:[0,4,7,12,15],imag:12,instal:0,interest:15,ivan:2,kei:15,keyboard:12,licens:2,list:15,main:16,manag:9,manipul:12,maslov:2,modul:12,mous:[12,15],object:15,openrpa:12,orchestr:[4,5,8,16],parti:2,practic:12,process:[5,9],processor:[4,5],properti:15,pyopenrpa:[3,5,16],python:[5,12],rdpsession:5,recognit:12,refer:[3,4,5,11],repo:16,requir:0,result:15,right:8,roadmap:1,robot:[12,16],rpa:12,run:15,schedul:5,screen:12,screenshot:15,script:12,search:15,second:15,select:15,selenium:12,set:4,shown:15,storag:5,structur:[12,16],studio:[12,16],system:0,templat:6,theori:12,tool:16,tree:15,turn:15,uac:[5,8],uidesktop:12,uio:12,uioselector:12,use:[7,12,15],user:8,viewer:15,web:[5,8,12],welcom:16,what:12,wiki:16,win32:12,x32:12,x64:12,you:15}})
\ No newline at end of file
+Search.setIndex({docnames:["01_HowToInstall","02_RoadMap","03_Copyrights_Contacts","Agent/02_Defs","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToUse","Orchestrator/05_UAC","Orchestrator/06_Defs Managers","Robot/01_Robot","Robot/02_Defs","Robot/03_HowToUse","Robot/04_Dependencies","Studio/01_Studio","Studio/02_HowToUse","Tools/02_Defs","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["01_HowToInstall.rst","02_RoadMap.rst","03_Copyrights_Contacts.rst","Agent\\02_Defs.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToUse.rst","Orchestrator\\05_UAC.rst","Orchestrator\\06_Defs Managers.rst","Robot\\01_Robot.rst","Robot\\02_Defs.rst","Robot\\03_HowToUse.rst","Robot\\04_Dependencies.rst","Studio\\01_Studio.rst","Studio\\02_HowToUse.rst","Tools\\02_Defs.rst","index.rst"],objects:{"pyOpenRPA.Agent":{__Agent__:[3,0,0,"-"]},"pyOpenRPA.Agent.__Agent__":{OSCMD:[3,1,1,""],OSFileBinaryDataBase64StrAppend:[3,1,1,""],OSFileBinaryDataBase64StrCreate:[3,1,1,""],OSFileBinaryDataBase64StrReceive:[3,1,1,""],OSFileTextDataStrCreate:[3,1,1,""],OSFileTextDataStrReceive:[3,1,1,""],ProcessWOExeUpperUserListGet:[3,1,1,""]},"pyOpenRPA.Orchestrator":{__Orchestrator__:[5,0,0,"-"]},"pyOpenRPA.Orchestrator.Managers":{ControlPanel:[9,0,0,"module-1"],Process:[9,0,0,"module-0"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel":{ControlPanel:[9,2,1,"id29"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel.ControlPanel":{DataDictGenerate:[9,3,1,"id30"],InitJSJinja2StrGenerate:[9,3,1,"id31"],InitJSJinja2TemplatePathSet:[9,3,1,"id32"],Jinja2DataUpdateDictSet:[9,3,1,"id33"],OnInitJSDataDict:[9,3,1,"id34"],OnInitJSStr:[9,3,1,"id35"],OnRefreshHTMLDataDict:[9,3,1,"id36"],OnRefreshHTMLHashStr:[9,3,1,"id37"],OnRefreshHTMLStr:[9,3,1,"id38"],OnRefreshJSONDict:[9,3,1,"id39"],RefreshHTMLJinja2StrGenerate:[9,3,1,"id40"],RefreshHTMLJinja2TemplatePathSet:[9,3,1,"id41"]},"pyOpenRPA.Orchestrator.Managers.Process":{Process:[9,2,1,"id0"],ProcessGet:[9,1,1,"id20"],ProcessManual2Auto:[9,1,1,"id21"],ProcessManualStopListClear:[9,1,1,"id22"],ProcessManualStopTriggerSet:[9,1,1,"id23"],ProcessStart:[9,1,1,"id24"],ProcessStatusCheck:[9,1,1,"id25"],ProcessStatusStrGet:[9,1,1,"id26"],ProcessStopForce:[9,1,1,"id27"],ProcessStopSafe:[9,1,1,"id28"]},"pyOpenRPA.Orchestrator.Managers.Process.Process":{Manual2Auto:[9,3,1,"id1"],ManualStopListClear:[9,3,1,"id2"],ManualStopTriggerNewStart:[9,3,1,"id3"],ManualStopTriggerSet:[9,3,1,"id4"],MuteWait:[9,3,1,"id5"],RestartForce:[9,3,1,"id6"],RestartSafe:[9,3,1,"id7"],ScheduleStatusCheckEverySeconds:[9,3,1,"id8"],Start:[9,3,1,"id9"],StartCheck:[9,3,1,"id10"],StatusChangeLog:[9,3,1,"id11"],StatusCheck:[9,3,1,"id12"],StatusCheckStart:[9,3,1,"id13"],StatusCheckStopForce:[9,3,1,"id14"],StatusCheckStopSafe:[9,3,1,"id15"],StopForce:[9,3,1,"id16"],StopForceCheck:[9,3,1,"id17"],StopSafe:[9,3,1,"id18"],StopSafeCheck:[9,3,1,"id19"]},"pyOpenRPA.Orchestrator.Web":{Basic:[5,0,0,"-"]},"pyOpenRPA.Orchestrator.Web.Basic":{JSActivityListExecute:[5,1,1,""],JSProcessorActivityListAdd:[5,1,1,""]},"pyOpenRPA.Orchestrator.__Orchestrator__":{ActivityItemCreate:[5,1,1,""],ActivityItemDefAliasCreate:[5,1,1,""],ActivityItemDefAliasModulesLoad:[5,1,1,""],ActivityItemDefAliasUpdate:[5,1,1,""],ActivityItemHelperDefAutofill:[5,1,1,""],ActivityItemHelperDefList:[5,1,1,""],AgentActivityItemAdd:[5,1,1,""],AgentActivityItemExists:[5,1,1,""],AgentActivityItemReturnExists:[5,1,1,""],AgentActivityItemReturnGet:[5,1,1,""],AgentOSCMD:[5,1,1,""],AgentOSFileBinaryDataBase64StrAppend:[5,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[5,1,1,""],AgentOSFileBinaryDataBase64StrReceive:[5,1,1,""],AgentOSFileBinaryDataBytesCreate:[5,1,1,""],AgentOSFileSend:[5,1,1,""],AgentOSFileTextDataStrCreate:[5,1,1,""],AgentOSFileTextDataStrReceive:[5,1,1,""],AgentOSLogoff:[5,1,1,""],AgentProcessWOExeUpperUserListGet:[5,1,1,""],GSettingsAutocleaner:[5,1,1,""],GSettingsGet:[5,1,1,""],GSettingsKeyListValueAppend:[5,1,1,""],GSettingsKeyListValueGet:[5,1,1,""],GSettingsKeyListValueOperatorPlus:[5,1,1,""],GSettingsKeyListValueSet:[5,1,1,""],OSCMD:[5,1,1,""],OSCredentialsVerify:[5,1,1,""],OSLogoff:[5,1,1,""],OSRemotePCRestart:[5,1,1,""],Orchestrator:[5,1,1,""],OrchestratorIsAdmin:[5,1,1,""],OrchestratorLoggerGet:[5,1,1,""],OrchestratorPySearchInit:[5,1,1,""],OrchestratorRerunAsAdmin:[5,1,1,""],OrchestratorRestart:[5,1,1,""],OrchestratorScheduleGet:[5,1,1,""],OrchestratorSessionRestore:[5,1,1,""],OrchestratorSessionSave:[5,1,1,""],OrchestratorThreadStart:[5,1,1,""],ProcessDefIntervalCall:[5,1,1,""],ProcessIsStarted:[5,1,1,""],ProcessListGet:[5,1,1,""],ProcessStart:[5,1,1,""],ProcessStop:[5,1,1,""],ProcessorActivityItemAppend:[5,1,1,""],ProcessorActivityItemCreate:[5,1,1,""],ProcessorAliasDefCreate:[5,1,1,""],ProcessorAliasDefUpdate:[5,1,1,""],PythonStart:[5,1,1,""],RDPSessionCMDRun:[5,1,1,""],RDPSessionConnect:[5,1,1,""],RDPSessionDisconnect:[5,1,1,""],RDPSessionDublicatesResolve:[5,1,1,""],RDPSessionFileStoredRecieve:[5,1,1,""],RDPSessionFileStoredSend:[5,1,1,""],RDPSessionLogoff:[5,1,1,""],RDPSessionMonitorStop:[5,1,1,""],RDPSessionProcessStartIfNotRunning:[5,1,1,""],RDPSessionProcessStop:[5,1,1,""],RDPSessionReconnect:[5,1,1,""],RDPSessionResponsibilityCheck:[5,1,1,""],RDPTemplateCreate:[5,1,1,""],SchedulerActivityTimeAddWeekly:[5,1,1,""],Start:[5,1,1,""],StorageRobotExists:[5,1,1,""],StorageRobotGet:[5,1,1,""],UACKeyListCheck:[5,1,1,""],UACSuperTokenUpdate:[5,1,1,""],UACUpdate:[5,1,1,""],UACUserDictGet:[5,1,1,""],WebAuditMessageCreate:[5,1,1,""],WebCPUpdate:[5,1,1,""],WebListenCreate:[5,1,1,""],WebRequestParseBodyBytes:[5,1,1,""],WebRequestParseBodyJSON:[5,1,1,""],WebRequestParseBodyStr:[5,1,1,""],WebRequestParseFile:[5,1,1,""],WebRequestParsePath:[5,1,1,""],WebRequestResponseSend:[5,1,1,""],WebURLConnectDef:[5,1,1,""],WebURLConnectFile:[5,1,1,""],WebURLConnectFolder:[5,1,1,""],WebUserInfoGet:[5,1,1,""],WebUserIsSuperToken:[5,1,1,""],WebUserUACHierarchyGet:[5,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[11,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[11,1,1,""],PWASpecification_Get_PWAApplication:[11,1,1,""],PWASpecification_Get_UIO:[11,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[11,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[11,1,1,""],UIOSelectorUIOActivity_Run_Dict:[11,1,1,""],UIOSelector_Exist_Bool:[11,1,1,""],UIOSelector_FocusHighlight:[11,1,1,""],UIOSelector_GetChildList_UIOList:[11,1,1,""],UIOSelector_Get_BitnessInt:[11,1,1,""],UIOSelector_Get_BitnessStr:[11,1,1,""],UIOSelector_Get_UIO:[11,1,1,""],UIOSelector_Get_UIOActivityList:[11,1,1,""],UIOSelector_Get_UIOInfo:[11,1,1,""],UIOSelector_Get_UIOList:[11,1,1,""],UIOSelector_Highlight:[11,1,1,""],UIOSelector_SafeOtherGet_Process:[11,1,1,""],UIOSelector_SearchChildByMouse_UIO:[11,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[11,1,1,""],UIOSelector_TryRestore_Dict:[11,1,1,""],UIOSelectorsSecs_WaitAppear_List:[11,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[11,1,1,""]},"pyOpenRPA.Tools":{StopSafe:[16,0,0,"-"]},"pyOpenRPA.Tools.StopSafe":{Init:[16,1,1,""],IsStopSafe:[16,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"0643":7,"0_stop":9,"100":6,"101":5,"1050":[5,6],"120":[6,9],"1200":6,"121":5,"123":[5,7],"127":5,"1680":[5,6],"1680x1050":[5,6],"1992":7,"1_stopped_manu":9,"2008":[0,17],"2012":0,"2019":17,"2021":1,"222":[4,6],"2999226":0,"2_stop_saf":9,"300":6,"3389":[5,6],"3600":6,"3720":[0,5,11,12],"3720python":12,"3_stop_safe_manu":9,"3rd":17,"4100115560661986":17,"412":5,"443":5,"4_start":9,"50000000":6,"5_started_manu":9,"600":6,"640x480":[5,6],"722":2,"77767775":5,"77777sdfsdf77777dsfdfsf77777777":5,"8081":6,"906":2,"999":7,"\u0432":11,"\u0432\u0445\u043e\u0434\u043d\u043e\u0439":11,"\u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c":11,"\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c":11,"\u043a":11,"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":11,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":6,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":6,"\u043d\u0435":11,"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438":11,"\u043e\u0448\u0438\u0431\u043a\u0443":11,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":6,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c":11,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443":11,"\u043f\u0443\u0441\u0442\u043e\u0433\u043e":11,"\u0441\u043b\u0443\u0447\u0430\u0435":11,"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":6,"\u0441\u043f\u0438\u0441\u043a\u0430":11,"\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f":11,"\u0444\u0430\u0439\u043b":6,"\u0444\u043b\u0430\u0433":11,"\u0447\u0442\u043e":11,"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":11,"byte":5,"case":[3,4,5,6,9,11,12],"catch":[3,5,6,9],"class":[9,12],"default":[3,5,6,9,12,15],"float":[4,6,9,11],"function":[2,3,5,6,9,10,11,12,16],"import":[4,5,6,7,9,10,11,12,16],"int":[4,5,9,11,12],"long":2,"new":[2,4,5,6,7,9],"return":[3,5,6,9,11,12,16],"switch":[9,13],"true":[3,5,6,7,8,9,10,11,12,16],"try":[5,11],"var":5,"while":[5,7],Abs:6,Are:0,DOS:[3,5],EXE:[3,5],For:[0,5,12,15],Has:6,NOT:5,RUS:[1,17],The:[0,4,5,6,9,10],Then:9,USEFUL:5,USe:[6,8],Use:[2,5,7,9],Will:[5,6,9],With:9,__agent__:17,__agentactivityreturndictitemcreate__:6,__agentdictitemcreate__:6,__create__:6,__init__:5,__main__:7,__name__:7,__orchestrator__:17,__statisticsdict__:6,__uacclientadmincreate__:[6,7],_sessionlast_rdplist:5,_sessionlast_storagedict:5,a2o:5,abil:12,abl:17,about:[2,4,5,6,9,16],abov:5,abs:[3,5],absolut:[2,3,5,6,17],abspath:[5,7],access:[5,6,7,17],accessus:6,action:[12,17],activ:[4,5,6,8,9,11,12,15],activitydict:[6,8],activityitem:[3,5],activityitemcr:5,activityitemdefaliascr:5,activityitemdefaliasmodulesload:5,activityitemdefaliasupd:5,activityitemdict:5,activityitemhelperdefautofil:5,activityitemhelperdeflist:5,activitylist:6,activitylistappendprocessorqueuebool:[6,8],activitylistexecut:5,activitylistexecutebool:[6,8],activitynam:12,activitytimelist:6,actual:[5,17],add:[5,6,7,9,12],addhandl:6,addit:[5,17],address:[5,6],addressstr:6,admin:[5,8],admindict:[6,8],administr:[5,7],after:[4,5,6,7,9,11,15,16],agent:[6,9],agentactivityitemadd:5,agentactivityitemexist:5,agentactivityitemreturnexist:5,agentactivityitemreturnget:5,agentactivitylifetimesecfloat:6,agentactivityreturndict:6,agentactivityreturnlifetimesecfloat:6,agentconnectionlifetimesecfloat:6,agentdict:[5,6],agentfilechunkbytessizeint:6,agentfilechunkcheckintervalsecfloat:6,agentkeydict:[6,8],agentkeystr:[6,8],agentlimitlogsizebytesint:6,agentloopsleepsecfloat:6,agentoscmd:5,agentosfilebinarydatabase64strappend:5,agentosfilebinarydatabase64strcr:5,agentosfilebinarydatabase64strrec:5,agentosfilebinarydatabytescr:5,agentosfilesend:5,agentosfiletextdatastrcr:5,agentosfiletextdatastrrec:5,agentoslogoff:5,agentprocesswoexeupperuserlistget:5,algorithm:[4,17],algorythm:[4,6,17],alia:[4,5,6],aliasdefdict:[4,5,6],aliv:9,all:[4,5,6,7,8,9,11,12,17],allow:[5,6,7,8,9,10,12,17],alreadi:[5,12],also:5,amd64:[0,5,11,12],analyz:17,ani:[0,4,5,9,12,15,17],anoth:[5,11,15],anr:5,ant:9,apach:2,app:[3,5,11,17],appear:[5,11],append:[4,5,6,8,9,12],appli:[4,6,9],applic:[4,5,6,9,11,12],approach:12,architectur:17,archiv:[0,5,6],arg:[4,5,6],argdict:[4,5,6],arggset:[4,5,6],arglist:[4,5,6],arglogg:[4,5,6],argument:5,argvaluestr:5,articl:[1,17],artifici:12,asctim:6,assert:12,associ:5,asweigart:2,async:[4,5],asynchonu:4,atexit:7,attent:[3,4,5,6,8,12,15,17],attribut:[4,6,11,12],audit:5,authent:6,authentif:5,authtoken:6,authtokensdict:6,auto:[5,9],autoclean:[4,6],autoinit:[5,7],autom:[1,9,13,17],automat:[4,6,15],automationsearchmouseel:11,avail:[5,6,7,12],b4ff:7,b64decod:3,backend:[11,12],backward:[5,9],base64:[3,5],base:[4,5,17],base_wrapp:12,basehttprequesthandl:[5,9],basic:[4,6,7,17],beauti:[3,5],becaus:[4,5,9,12],been:[0,5,6,12,17],befor:[5,6],beginwith:[5,6],below:[4,5,15,17],best:[10,17],between:[4,5,6,7],big:[5,12,17],binari:[3,5],bit:[2,5,11,12],block:[5,6,9],bodi:[5,6],bool:[4,5,6,9,12],boppreh:2,both:[5,11,12],box:7,branch:0,browser:[6,15],bsd:2,bug:2,build:[2,17],built:0,busi:[4,5,12,17],button:[6,8],cabinetwclass:12,cach:6,calcfram:12,call:[4,5,6,7,9,11],callabl:5,can:[2,3,4,5,6,7,8,9,10,11,12,16,17],cancel:11,cant:4,captur:17,catchperiodsecfloat:6,central:4,certfilepempathstr:6,certif:5,chang:[6,9,17],check:[5,6,9,11,12,16,17],checkintervalsecfloat:6,child:[11,12],children:12,choos:11,chrome:12,chunk:6,class_nam:12,class_name_r:12,classif:12,claus:2,cleaner:5,clear:[5,6,9,12],click:[10,12],client:[5,6,9],clientrequesthandl:6,clipboard:5,close:[5,6,12,16],cmd:[3,5,6,8,15,17],cmdinputbool:[6,8],code:[4,5,6,9,12],collect:6,com:[0,2,12,13],come:[3,5,9,16,17],comma:4,command:[3,5,6,12],commerci:17,common:12,commun:5,compact:2,compani:[2,5,17],compat:[5,9,12],compex:4,compil:17,complet:[0,6],complex:4,compon:17,comput:[12,17],concept:17,condit:[11,12],config:[7,11],configur:[5,6,7,11,17],congratul:17,connect:[5,6],connectioncountint:6,connectionfirstqueueitemcountint:6,consist:4,consol:[6,12,15,17],consolid:[4,17],contact:17,contain:[5,6,9,11,12,15],content:[3,5,6],context:9,continu:5,control:[4,5,6,7,9,17],control_typ:12,control_type_r:12,controlpanel:[5,6,7,17],controlpaneldict:6,controlpanelinst:9,controlpanelkeyallowedlist:6,controlpanelrefreshintervalsecfloat:6,convent:12,cooki:6,copi:12,copyright:17,core:[1,4,17],cost:[1,17],count:9,cp1251:[3,5],cp866:[3,5],cp_:[5,7],cp_versioncheck:5,cpdict:6,cpkei:6,cpkeydict:[6,8],cpkeystr:[6,8],creat:[2,3,4,5,6,7,9,10,17],credenti:5,criteria:9,crosscheck:5,css:13,ctrl_index:12,current:[3,4,5,6,7,8,12],custom:[4,8,12],cv2:12,daemon:[3,5],dai:5,dashboard:5,data:[3,5,6,9],datadictgener:9,datasetlast:6,datetim:[6,7],deadlin:2,dear:17,debug:[5,6],decentr:4,decid:17,decod:3,def:[4,6,7,8,10,17],defaliastest:[4,6],defhelp:5,defnamestr:6,defsettingsupdatepathlist:6,depend:17,deploi:5,deprec:[5,6],depth:12,depth_end:12,depth_start:12,depth_stop:12,depthbit:[5,6],descipt:12,descript:[11,12,17],desktop:[1,4,5,6,9,11,17],desktopus:5,destin:[5,11],detail:[4,5,17],detect:[5,6,9,11,12],determin:[5,9],dev:5,develop:[5,12,17],dict:[3,5,6,9,11,12,17],dictionari:[4,6],differ:4,directori:[5,12],disappear:11,disc:5,disconnect:[5,6],distribut:17,divis:17,dll:17,doc:[12,17],document:[11,17],docutil:[3,5,11,16],dodict:6,doe:[5,15],doen:5,doesn:11,domain:6,domainadstr:6,domainupperstr:5,domainus:5,don:[3,5,6,8,9],done:1,dont:[5,6,8,9],doubl:15,download:0,dp0:12,draw:11,drive:[5,6],driver:12,dsd:[4,6],dumo:5,dump:[6,7],dumploglist:6,dumploglistcountint:6,dumploglisthashstr:6,dumploglistrefreshintervalsecfloat:6,duplic:5,durat:6,dynam:12,each:[5,6,12,17],earli:[3,5],edit:17,editor:15,elem:12,element:[11,12],elif:7,els:[3,5,6,7,9,11],empti:[5,6,8],enabl:[5,12],encapsul:[3,17],encod:[3,5],end:[4,5],eng:[1,17],enjoi:5,enterpris:17,enumer:9,enumeratedef:9,env:[6,9],enviro:12,environ:5,equal:[5,6],equalcas:[5,6],etc:5,even:5,event:9,everi:[5,6,9],everydai:5,exact:12,exampl:[3,4,5,6,8,9,10,11],except:[0,5],exe:[0,5,9,10,11,12,16],execut:[3,4,5,6,8,9,14,17],executebool:6,exist:[3,5,6,9,11,12],exit:7,expens:17,expir:5,explor:[12,15],express:12,extens:[5,9,12],extra:5,extract:[5,12,17],facebook:2,fail:9,fals:[3,5,6,7,9,11],fast:[2,17],featur:[4,5,6,8,17],feel:2,field:[5,6],file:[3,5,6],filebodybyt:5,filehandl:6,filemanag:6,filemod:6,filenamestr:5,fileurl:6,fileurlfilepathdict:6,fileurlfilepathdict_help:6,fill:[5,6],filter:5,find:[2,4,10,11,12],find_element_by_nam:12,find_window:[11,12],firefox:12,first:[7,12,17],flag:[3,5,6,9],flagaccess:6,flagaccessdefrequestglobalauthent:6,flagcredentialsask:6,flagdonotexpir:6,flagsessionisact:[5,6],flaguseallmonitor:[5,6],flase:[3,5],flexibl:4,focu:11,folder:[5,7,12,17],follow:[0,8,9,15,17],forc:[5,9,17],forget:6,format:[3,5,9],formatt:6,found:12,founder:17,frame:7,framework:[11,12,13,17],free:[2,17],fridai:5,friendly_class_nam:12,friendly_class_name_r:12,fro:5,from:[0,3,4,5,6,7,9,10,11,16,17],front:5,full:[5,6],fulli:12,fullscreen:[5,6],fullscreenbool:[6,8],fullscreenrdpsessionkeystr:6,functional:7,further:5,futher:9,garbag:5,gener:[5,6,17],get:[5,6,9,11,12,17],get_osbitnessint:11,getcontrol:11,getlogg:6,git:[0,5,6,8],github:2,gitlab:[0,1,2,12,17],give:[5,6,8],given:5,glob:5,global:[3,5,17],goe:4,going:17,good:[4,17],got:7,graphic:[12,17],great:17,group:[8,17],gset:[4,7,17],gsettingsautoclean:5,gsettingsdict:5,gsettingsget:[5,7],gsettingskeylistvalueappend:5,gsettingskeylistvalueget:5,gsettingskeylistvalueoperatorplu:5,gsettingskeylistvalueset:5,gui:[3,4,5,11,12,13,17],guid:[1,5,6],guidstr:[5,6],gurbag:6,habr:[1,17],handl:6,handlebar:13,handler:[5,6,9],hard:[5,6,8],has:[0,2,4,5,6,8,9,12,16],hash:9,have:5,height:[5,6],help:[0,2,5,17],helpfulli:11,here:[5,7,10,11,12,17],hex:[5,6,12],hidden:5,hiddenisorchestratoriniti:6,hierarchi:[5,12,15],highlight:[11,12,15],hightlight:15,homepag:2,host:[5,6],hostnam:[5,9],hostnameupperstr:6,how:[9,11,16,17],html:[1,3,5,6,9,11,12,16,17],htmlrenderdef:6,http:[0,2,3,4,5,6,9,11,12,13,16,17],human:5,identif:[5,12],identifi:[9,12],ignor:[5,6],ignorebool:[6,8],imag:17,imaslov:7,implement:12,inactionnam:11,inactivityitemdict:5,inactivitylist:5,inaddressstr:5,inadisdefaultbool:[5,7],inadloginstr:[5,7],inadstr:[5,7],inagentfilepathstr:5,inagenthostnamestr:9,inagentusernamestr:9,inaliasstr:5,inarg1str:5,inargdict:5,inarggset:5,inarggsettingsstr:5,inarglist:5,inargloggerstr:5,inargu:12,inargumentlist:11,inbackend:11,inbreaktriggerprocesswoexelist:5,incertfilepempathstr:5,incheckintervalsecfloat:5,incloseforcebool:5,includ:11,incmdencodingstr:[3,5],incmdstr:[3,5],incontenttypestr:5,incontrolpanelnamestr:9,incontrolspecificationarrai:11,incpkeystr:5,indatadict:9,indef:5,indefargdict:5,indefarggsettingsnamestr:5,indefarglist:5,indefargloggernamestr:5,indefargnamegsettingsstr:[5,7],indefnamestr:5,indefquerystr:5,indefstr:[5,7],indepthbitint:5,index:[4,5,6,11,12],indict:6,indomainstr:5,indumprestorebool:[5,7],inel:[10,11,12],inelementspecif:11,inencodingstr:[3,5],inexecuteinnewthreadbool:5,infiledatabase64str:[3,5],infiledatabyt:5,infiledatastr:[3,5],infilepathstr:[3,5],inflagforceclosebool:5,inflaggetabspathbool:5,inflagraiseexcept:[10,11,12],inflagwaitallinmo:11,info:[5,6,7,12],infolderpathstr:5,inforcebool:5,inform:[4,5,9],infrastructur:17,inglobpatternstr:[5,7],ingset:[3,4,5,7],ingsettingsclientdict:6,inguidremovebool:5,inguidstr:5,inhashkeystr:6,inheightpxint:5,inherit:12,inhostfilepathstr:5,inhostnamestr:5,inhoststr:[5,6],inhtmlrenderdef:5,inintervalasyncbool:5,inintervalsecfloat:5,inintervalsecondsint:9,inismanualbool:9,init:[4,5,6,7,9,11,16],initdatetim:6,initi:[5,6,9],initjsjinja2strgener:9,initjsjinja2templatepathset:9,injinja2dataupdatedict:9,injinja2templatepathstr:9,injinja2templaterefreshbool:9,injsinitgeneratordef:5,injsongeneratordef:5,inkeyfilepathstr:5,inkeylist:5,inkeystr:6,inkwargumentobject:11,inlogg:[5,6,7,9,16],inloggerlevel:6,inloginstr:[5,6],inmatchtypestr:5,inmessagestr:5,inmethodstr:5,inmodestr:[4,5,6,7],inmodulepathstr:5,inmstdnint:9,inmstdtsecfloat:9,inoperationcodestr:5,inorchestratorfilepathstr:5,inpasswordstr:[5,6],inpathstr:5,inportint:5,inportstr:[5,6],inprocessnamewexestr:5,inprocessnamewoexelist:[3,5],inprocessnamewoexestr:[5,9],inrdpfilepathstr:5,inrdpsessionkeystr:[5,6],inrdptemplatedict:5,inrefreshhtmljinja2templatepathstr:9,inrequest:[5,9],inresponestr:5,inreturn:6,inrobotnamestr:[5,9],inrolehierarchyalloweddict:[5,7],inrolekeylist:5,inrowcountint:6,inrunasadministratorbool:5,inrunasyncbool:[3,5],insendoutputtoorchestratorlogsbool:[3,5],insert:[5,7],inserverkeystr:5,inshareddrivelist:5,inspecificationlist:[10,11,12],inspecificationlistlist:11,instal:17,instanc:[4,5,6,9,11,12],instartcmdstr:9,instartpathstr:9,instopprocessnamewoexestr:5,instopsafetimeoutsecfloat:9,insupertokenstr:[5,7],intellig:12,interact:[4,5,11],interest:5,interfac:[4,5,7,12,17],intern:9,internet:15,interpret:4,interv:[5,6,9],intervalsecfloat:6,inthreadbool:5,intimehhmmstr:5,inuioselector:11,inurllist:[5,7],inurlstr:5,inusebothmonitorbool:5,inusernamestr:5,inuserstr:5,invalu:5,inwaitsec:11,inweekdaylist:5,inwidthpxint:5,is_en:12,is_vis:12,islistenbool:6,isresponsiblebool:5,issafestop:[9,16],issignalclos:7,isstopsaf:16,issu:2,it4busi:2,it4busin:2,item:[4,5,6,11,12],iter:[5,6],ivan:17,ivanmaslov:2,java:9,javascript:5,jinja2:9,jinja2dataupdatedictset:9,join:[5,7],jsactivitylistexecut:5,jsinitgeneratordef:6,json:[3,4,5,6,9],jsongeneratordef:6,jsprocessoractivitylistadd:5,jsrender:13,jsview:13,just:[9,12],kb2999226:0,keep:4,kei:[5,6,9,12],keyboard:[2,13,17],keyfilepathstr:6,keystr:6,kill:5,killer:17,know:[4,9],known:17,kwarg:4,lactivityitem:5,laliasstr:5,last:[6,9],later:5,latest:12,launch:5,lcp:9,lcpmanag:9,leaflet:[1,17],left:4,len:6,less:[1,17],let:17,level:[12,17],levelnam:6,lib:[5,12],librari:12,licens:17,life:6,lifetim:6,lifetimerequestsecfloat:6,lifetimesecfloat:6,light:4,like:[4,17],line:12,link:[4,5,6,17],linkedin:2,list:[3,4,5,6,9,11,12,17],listen:5,listendict:6,listread:6,litem:12,littl:8,llogger:5,lnotepadokbutton:10,load:[5,6,9],local:5,localhost:6,locat:5,lof:9,log:[3,5,6,7,8,9,16,17],logger:[5,6,16],loggerdumploghandleradd:6,loggerhandlerdumploglist:6,login:[5,6,7],logoff:[5,6],logout:17,logviewerbool:[6,8],lol:15,look:[4,5,6,8,15,17],lookmachinescreenshot:6,loop:[6,12],low:12,lowercas:6,lprocess:9,lprocessisstartedbool:5,lprocesslist:5,lpymodul:7,lpyopenrpa_settingsdict:11,lpyopenrpasourcefolderpathstr:7,lrdpitemdict:5,lrdptemplatedict:5,lrequest:5,lresult:6,lresultdict:[5,6],luacclientdict:7,lwebauditmessagestr:5,lxml:13,mac:17,machin:[0,5,6,17],machina:6,magenthostnamestr:6,magentusernamestr:6,mail:2,main:[4,5,6,7,9,12],maintain:17,make:12,makedir:6,manag:[5,6,17],managersprocessdict:6,mani:[2,4,11,17],manipul:[5,8,17],manual2auto:9,manual:9,manualstop:9,manualstoplistclear:9,manualstoptrigg:9,manualstoptriggernewstart:9,manualstoptriggerset:9,mark:9,markdown:[1,17],maslov:17,master:0,match:12,matchtyp:6,math:9,mathmodul:9,max:6,maxim:11,maximum:12,mayb:5,mechan:4,mega:[4,8],megafind:2,memori:5,menu:10,merg:5,messag:[5,6,16],method:[6,9,12],methodmatchurl:6,methodmatchurlbeforelist:6,methodolog:2,mhandlerdumploglist:6,microsoft:[0,12],minim:11,minut:6,miss:12,mit:[2,17],mmstr:6,mode:15,model:[2,12],modifi:9,modul:[4,5,6,7,16],modulenamestr:5,moduletocal:5,mondai:5,monitor:5,more:[4,6,7,9,12],mous:17,mprocessnamewoexestr:6,mrobotlogg:6,mrobotloggerfh:6,mrobotloggerformatt:6,mrobotnamestr:9,mst:9,mstatusstr:9,mstopsafetimeoutsecfloat:9,must:6,mutewait:9,name:[4,5,6,9,11,12],namewoexestr:5,namewoexeupperstr:5,need:[0,2,3,4,5,6,7,8,9,11,12,17],nest:5,net:[3,5,11,16],never:5,newkeydict:5,newkeylist:5,newvalu:5,next:[5,9,12],non:17,none:[3,4,5,6,9,10,11,12,16],notat:[11,12],notepad:[3,5,9,10,11,12],noth:5,nothingbool:[6,8],now:[5,6,9,11],nul:12,object:[4,5,6,11,12,17],occupi:5,ocr:12,octet:5,off:[6,8],old:[5,6,7,11],onc:[9,11],one:[6,8],oninitj:9,oninitjsdatadict:9,oninitjsstr:9,onli:[0,3,5,6,8,9,11,12,17],onlin:17,onrefreshhtml:9,onrefreshhtmldatadict:9,onrefreshhtmlhashstr:9,onrefreshhtmlstr:9,onrefreshjson:9,onrefreshjsondict:9,op_code_1:5,open:[1,6,15,17],opencv:[0,13,17],openrpa52zzz:7,openrpa:[0,6],openrpa_32:15,openrpa_64:15,openrpaorchestr:12,openrparesourceswpy32:12,openrparesourceswpy64:12,openrparobotguix32:11,opensourc:17,oper:[0,5,7,9,17],opera:12,operatormodul:9,optim:9,option:[5,6,8,12],orc:[5,6,8],orch:6,orchestr:[3,6,7,9],orchestratorisadmin:[5,7],orchestratorloggerget:[5,7],orchestratormain:12,orchestratormodul:9,orchestratorpysearchinit:[5,7],orchestratorrerunasadmin:[5,7],orchestratorrestart:5,orchestratorscheduleget:5,orchestratorsessionrestor:[5,7],orchestratorsessionsav:5,orchestratorstart:6,orchestratorthreadstart:5,order:[4,12,15],org:[2,12],oscmd:[3,5],oscredentialsverifi:5,osfilebinarydatabase64strappend:3,osfilebinarydatabase64strcr:3,osfilebinarydatabase64strrec:3,osfiletextdatastrcr:3,osfiletextdatastrrec:3,oslogoff:5,osremotepcrestart:[5,6],other:[11,12,17],our:12,out:5,outargu:12,outlin:11,output:[3,5,6,9],outstr:5,over:9,overrid:9,overwrit:6,own:[4,7,9,12,17],packag:[0,5,7,9,10,17],page:[5,6,8,9,10],page_sourc:12,pai:[4,6],paid:[1,17],panel:[5,6,7,8,9,15],param:[3,5,9],paramet:[3,4,5,6,9,11,16],parent:[11,12,15],pars:5,parti:17,pass:[5,6,9],password:[5,6],path:[3,5,6,7,12],paus:12,pdb:6,pdf:[1,17],pem:5,perfom:[12,17],perform:17,perio:9,period:[5,6,9],perman:5,phone:4,pickl:5,pid:5,pil:13,pixel:[5,6],plan:5,platform:17,pleas:[5,17],plu:5,port:[5,6],portabl:[0,12],portint:6,possibl:17,post:[5,6],postfix:5,power:[5,17],powershel:[5,6],practic:[8,17],prefer:2,prepar:[5,9],previou:[5,9],print:[7,12],privat:5,procedur:5,process:[3,4,6,7,11,12,14,17],processbit:11,processdefintervalcal:5,processdetaillist:5,processget:9,processisstart:5,processlistget:5,processmanual2auto:9,processmanualstoplistclear:9,processmanualstoptriggerset:9,processnam:5,processor:[3,6,8,17],processoractivityitemappend:5,processoractivityitemcr:5,processoraliasdefcr:5,processoraliasdefupd:5,processordict:6,processstart:[5,9],processstatuscheck:9,processstatusstrget:9,processstop:5,processstopforc:9,processstopsaf:9,processwoexelist:5,processwoexeupperlist:5,processwoexeupperuserlistget:3,product:12,program:[5,6,9,10],progress:1,project:[4,17],properti:[8,17],protocol:4,prototyp:6,provid:[12,17],psutil:[7,13],pull:[6,8],purpos:2,push:6,pwa:12,pwaspecif:12,pwaspecification_get_pwaappl:11,pwaspecification_get_uio:11,pyautogui:[2,12,13,17],pycon:12,pymupdf:13,pyopenrpa:[0,1,2,4,6,7,8,9,10,11,12,14,16],pyopenrpa_uidesktopx32:11,pyopenrpa_uidesktopx64:11,pyopenrpadict:[6,8],pypathstr:5,python32fullpath:11,python32processnam:11,python64fullpath:11,python64processnam:11,python:[0,4,9,10,11,13,15,17],pythonstart:5,pywin32:[2,13],pywinauto:[2,11,12,13],queri:5,queue:[1,4,5,6,8],queuelist:6,r01:6,r01_integrationorderout:6,r01_orchestratortorobot:6,rais:5,rdp:[4,5,6,8],rdpactiv:6,rdpkei:5,rdpkeydict:[6,8],rdpkeystr:[6,8],rdplist:[5,6],rdpsession:17,rdpsessioncmdrun:5,rdpsessionconnect:[5,6],rdpsessiondisconnect:[5,6],rdpsessiondublicatesresolv:5,rdpsessionfilestoredreciev:5,rdpsessionfilestoredsend:5,rdpsessionkei:6,rdpsessionkeystr:6,rdpsessionlogoff:5,rdpsessionmonitorstop:5,rdpsessionprocessstartifnotrun:5,rdpsessionprocessstop:5,rdpsessionreconnect:[5,6],rdpsessionresponsibilitycheck:5,rdptemplatecr:5,read:[3,5,6],readi:0,readthedoc:[5,6,12],receiv:5,reciev:[5,6],recognit:17,reconnect:[5,6],reconnectbool:[6,8],recoverydict:6,recurs:12,reestr_otgruzok:6,refer:17,refresh:[6,9],refreshhtmljinja2strgener:9,refreshhtmljinja2templatepathset:9,refreshsecond:6,regener:5,regist:7,regular:12,rel:[5,6],reliabl:[2,17],reload:9,rememb:[6,8],remot:[5,6,17],remov:[5,6,9],render:[9,15],renderfunct:6,renderrobotr01:6,replac:5,report:6,reqir:4,request:[5,6,9,13],requestinst:9,requesttimeoutsecfloat:6,requir:[5,9,17],rerun:5,resolut:[5,6],resourc:[0,5,11,12,17],respons:[5,6],responsecontenttyp:6,responsedefrequestglob:6,responsefilepath:6,responsefolderpath:6,responsibilitycheckintervalsec:6,restart:[5,6,8,9],restartforc:9,restartorchestr:6,restartorchestratorbool:[6,8],restartorchestratorgitpullbool:[6,8],restartpcbool:[6,8],restartsaf:9,restor:[5,7,11],restrict:17,restructuredtext:[3,5,11,16],result:[5,6,8,9,11,12],retart:5,returnbool:6,returnedbydatetim:6,rich_text:12,rich_text_r:12,right:[5,17],roadmap:17,robot:[4,5,6,7,8,9,10,11,16],robot_r01:6,robot_r01_help:6,robotlist:6,robotrdpact:[5,6],rolehierarchyalloweddict:6,root:[5,6],row:6,rpa01:5,rpa:[1,5,6,10,17],rpa_99:5,rpatestdirtest:5,rst:[3,5,11,16],ruledomainuserdict:6,rulemethodmatchurlbeforelist:6,run:[0,3,5,6,7,9,11,17],russia:[2,17],russian:17,safe:[3,5,9,11,17],safeti:5,same:11,save:[5,9],schedul:[4,6,9,17],scheduleractivitytimeaddweekli:5,schedulerdict:6,schedulestatuscheckeverysecond:9,scopesrcul:[5,6],screen:[5,6,17],screenshot:[0,6,8,17],screenshotviewerbool:[6,8],script:[4,9,17],search:[5,17],sec:[5,6],second:[5,6,9,11,12],section:[5,11],secur:5,see:[0,5,6,7,9,10,11,17],select:11,selector:[11,12,15,17],selenium:[2,13,17],self:9,semant:[2,13],send:[3,5,6,8,9,17],send_kei:12,sensit:5,sent:[5,6],sequenc:4,server:[0,3,4,5,6,8,9,15,17],serverdict:6,serverinst:6,serverset:[6,9],serverthread:6,sesion:[5,6],session:[3,5,6,17],sessionguidstr:6,sessionhex:[5,6],sessionisignoredbool:[5,6],sessioniswindowexistbool:[5,6],sessioniswindowresponsiblebool:[5,6],set:[3,5,6,7,8,9,11,17],set_trac:6,setformatt:6,setlevel:6,settingsinit:11,settingstempl:[4,6,7],settingsupd:[5,7],setup:6,sever:[4,12,17],share:5,shareddrivelist:[5,6],shell:[5,17],should:[6,9],show:[6,8],side:[5,6,8,9,16],signal:[5,7,9,16],signal_term_handl:7,sigterm:7,simplifi:12,sinc:[6,17],singl:4,singleton:[3,5],site:5,size:6,skype:2,sleep:[6,7,12],socket:4,softwar:2,solut:[0,12,17],some:[2,4,5,6,8,9,17],someprocess:[9,16],soon:[1,17],sorri:17,sort:5,sourc:[3,4,5,7,9,11,16,17],sourceforg:[3,5,11,16],space:4,special:[5,6],specialist:2,specif:12,specifi:[5,9],sphinx:[4,17],ssl:5,stabl:[5,6],standart:6,start:[0,3,5,6,7,9,12,15,17],startcheck:9,statu:[5,9],status:9,statuschangelog:9,statuscheck:9,statuscheckstart:9,statuscheckstopforc:9,statuscheckstopsaf:9,statuscheckstorforc:9,stdout:[6,7],stop:[5,9,12,16,17],stopforc:9,stopforcecheck:9,stopsaf:[9,17],stopsafecheck:9,storag:[6,17],storagedict:6,storagerobotdict:9,storagerobotexist:5,storagerobotget:[5,9],store:6,str:[4,5,6,9,11,12],stream:5,streamhandl:6,strftime:6,string:[3,5,11],struct:6,structur:[4,5,6],studio:[4,14,15],subprocess:12,success:5,successfulli:[0,5,6,12,17],sundai:5,supertoken:[5,7],superus:[5,7],supetoken:5,supplement:12,support:[0,4,7,9,12,15,17],symbol:4,sync:[4,5],synchroni:5,sys:[5,6,7,12],system:17,tablet:4,task:2,taskkil:[9,16],technic:[4,6],technicalsessionguidcach:6,telegram:2,templat:[9,17],term:9,termin:[7,9],terminolog:12,tesseract:13,test2:6,test:[3,5,6,7,9],testcontrolpanel:9,testcontrolpanelkei:6,testdef:5,testdefalia:5,testdir:5,testdirtest:5,testrdp:6,testttt:9,text:[3,5,12,15],than:[4,6,11],thank:[2,17],theori:17,thi:[3,5,6,8,9,12,17],thing:9,thought:5,thread:[4,5,6,8],threadidint:6,thursdai:5,thx:12,time:[5,6,7,9,12,17],timehh:6,titl:[10,11,12],title_r:12,todo:[5,6,9],token:5,tokendatetim:6,too:[5,6,8],tool:[4,6,7,9,12,15,16],top:11,tor:17,track:5,transmiss:5,transmit:[3,4,5,6,9],tree:17,tri:9,trigger:[5,6,9],triggercountint:6,ttt:[4,6],turn:[6,8],turpl:4,tutori:[1,17],txt:5,type:[5,6,7,9],uac:17,uacclientcheck:9,uackeylistcheck:5,uacsupertokenupd:[5,7],uacupd:[5,7],uacuserdictget:[5,9],uia:[11,12],uidesktop:[10,11],uio:[11,15,17],uioactiv:[11,12],uioei:12,uioinfo:12,uioselector:11,uioselector_exist_bool:11,uioselector_focushighlight:[11,12],uioselector_get_bitnessint:11,uioselector_get_bitnessstr:11,uioselector_get_uio:[10,11,12],uioselector_get_uioactivitylist:11,uioselector_get_uioinfo:11,uioselector_get_uiolist:11,uioselector_getchildlist_uiolist:11,uioselector_highlight:11,uioselector_safeotherget_process:11,uioselector_searchchildbymouse_uio:11,uioselector_searchchildbymouse_uiotre:11,uioselector_tryrestore_dict:11,uioselectorsecs_waitappear_bool:11,uioselectorsecs_waitdisappear_bool:11,uioselectorssecs_waitappear_list:11,uioselectorssecs_waitdisappear_list:11,uioselectoruioactivity_run_dict:11,uiotre:12,under:17,understand:8,unicodelab:[0,2,12],univers:4,unix:17,unzip:0,updat:[5,6],upper:[3,5,6,9],url:[5,6],urllist:6,usag:[5,9,10,12],use:[0,3,4,5,6,8,9,11,16,17],used:5,useful:12,user:[3,4,5,6,7,9,11,12,17],user_99:5,user_pass_her:5,useradstr:6,userinfodict:9,usernam:5,usernameupperstr:5,userrpa:5,useruaccheckdef:9,useruacdict:9,userupperstr:6,using:[5,12,17],utf:[3,5],util:[6,11,17],valu:[5,6,11],variant:5,ver:[5,12],veri:[2,5],verifi:5,version:[5,9,12,15],versionstr:6,via:[2,5,9],video:12,viewer:[6,8,17],virtual:6,visibl:12,vision:[12,17],vista:0,visual:17,vms:5,wai:[5,7,12,17],wait:[3,5,9,11,12,15],want:[4,6,8,9,15,17],warn:[6,7],warningexecutionmorethansecfloat:6,web:[1,4,6,9,17],webaudit:5,webauditmessagecr:5,webcpupd:5,webdriv:12,weblistencr:[5,7],webrequestparsebodybyt:5,webrequestparsebodyjson:5,webrequestparsebodystr:5,webrequestparsefil:5,webrequestparsepath:5,webrequestresponsesend:5,weburlconnectdef:5,weburlconnectfil:5,weburlconnectfold:5,webuserinfoget:[5,9],webuserissupertoken:5,webuseruachierarchyget:5,wednesdai:5,week:5,weekdai:[5,6],weekdaylist:6,well:17,were:17,whatsapp:2,when:[4,5,6,9,11,15],where:[3,5,12,15],which:[2,4,5,6,9,10,11,12,17],who:6,why:4,width:[5,6],wiki:12,win32:[11,17],win32api:13,win:5,window:[0,3,5,6,11,13,17],winpython:2,without:[0,3,5,6,9,17],wm_close:[9,16],wmi:13,work:[5,6,8,9,12,17],workingdirectorypathstr:6,world:17,wpy32:[0,11,12],wpy64:[0,5,11,12],wrapper:11,write:[2,3,4,12,17],www:[2,12,13],x32:[0,11,13,15,17],x64:[0,5,11,13,15,17],xlsx:6,yoomonei:17,you:[0,2,3,4,5,6,7,8,9,10,11,12,16,17],your:[0,2,6,9,11,12],zip:0},titles:["1. How to install","2. Roadmap","3. Copyrights & Contacts","2. Defs","1. Description","2. Defs","3. gSettings Template","4. How to use","5. UAC - User Access Control","6. Defs Managers","1. Description","2. Defs","3. How to use","4. Dependencies","1. Description","2. How to use","2. Defs StopSafe","Welcome to pyOpenRPA\u2019s wiki"],titleterms:{The:[12,15,17],Use:12,__agent__:3,__orchestrator__:5,about:[8,12,17],access:[8,12],action:15,agent:[3,5,17],app:12,architectur:4,autom:12,basic:5,button:15,captur:12,check:0,choos:15,click:15,cmd:12,compon:[2,4],concept:4,configur:4,contact:2,content:[15,17],control:8,controlpanel:9,copyright:2,creat:12,ctrl:15,def:[3,5,9,11,16],definit:12,depend:[2,13],descript:[4,10,14,15],desktop:12,detail:9,dict:[4,8],dll:12,donat:17,exampl:12,execut:12,expand:15,extract:15,file:12,founder:2,from:12,gener:9,global:4,group:5,gset:[5,6],gui:15,guid:17,has:17,hold:15,hover:15,how:[0,4,7,12,15],imag:12,instal:0,interest:15,ivan:2,kei:15,keyboard:12,licens:2,list:15,main:17,manag:9,manipul:12,maslov:2,modul:12,mous:[12,15],object:15,openrpa:12,orchestr:[4,5,8,17],parti:2,practic:12,process:[5,9],processor:[4,5],properti:15,pyopenrpa:[3,5,17],python:[5,12],rdpsession:5,recognit:12,refer:[3,4,5,11,16],repo:17,requir:0,result:15,right:8,roadmap:1,robot:[12,17],rpa:12,run:15,schedul:5,screen:12,screenshot:15,script:12,search:15,second:15,select:15,selenium:12,set:4,shown:15,stopsaf:16,storag:5,structur:[12,17],studio:[12,17],system:0,templat:6,theori:12,tool:17,tree:15,turn:15,uac:[5,8],uidesktop:12,uio:12,uioselector:12,use:[7,12,15],user:8,viewer:15,web:[5,8,12],welcom:17,what:12,wiki:17,win32:12,x32:12,x64:12,you:15}})
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md b/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
index 0b3cb91f..572414aa 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/02_Defs.md
@@ -148,6 +148,11 @@ Work with activity scheduling.
| Read text file in the agent GUI session
|
+| `AgentOSLogoff`(inHostNameStr, inUserStr)
+
+ | Logoff the agent user session
+
+ |
| `AgentProcessWOExeUpperUserListGet`(…[, …])
| Return the process list only for the current user (where Agent is running) without .EXE in upper case.
@@ -193,6 +198,11 @@ Work with activity scheduling.
| Verify user credentials in windows.
|
+| `OSLogoff`()
+
+ | Logoff the current orchestrator session :return:
+
+ |
| `OSRemotePCRestart`(inHostStr[, inForceBool, …])
| Send signal via power shell to restart remote PC ATTENTION: Orchestrator user need to have restart right on the Remote machine to restart PC.
@@ -228,6 +238,11 @@ Work with activity scheduling.
| Orchestrator restart
|
+| `OrchestratorScheduleGet`()
+
+ | Get the schedule (schedule.readthedocs.io) from the Orchestrator
+
+ |
| `OrchestratorSessionRestore`([inGSettings])
| Check _SessionLast_RDPList.json and _SessionLast_StorageDict.pickle in working directory. if exist - load into gsettings # _SessionLast_StorageDict.pickle (binary) _SessionLast_RDPList.json (encoding = “utf-8”) _SessionLast_StorageDict.pickle (binary).
@@ -238,6 +253,11 @@ Work with activity scheduling.
| Orchestrator session save in file
|
+| `OrchestratorThreadStart`(inDef, \*inArgList, …)
+
+ | Execute def in new thread and pass some args with list and dict types
+
+ |
| `ProcessDefIntervalCall`(inDef, inIntervalSecFloat)
| Use this procedure if you need to run periodically some def.
@@ -998,6 +1018,16 @@ Read text file in the agent GUI session
+### pyOpenRPA.Orchestrator.__Orchestrator__.AgentOSLogoff(inHostNameStr, inUserStr)
+Logoff the agent user session
+
+
+* **Returns**
+
+ GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
+
+
+
### pyOpenRPA.Orchestrator.__Orchestrator__.AgentProcessWOExeUpperUserListGet(inHostNameStr, inUserStr, inGSettings=None)
Return the process list only for the current user (where Agent is running) without .EXE in upper case. Can use in ActivityItem from Orchestrator to Agent
@@ -1227,6 +1257,11 @@ Verify user credentials in windows. Return bool
+### pyOpenRPA.Orchestrator.__Orchestrator__.OSLogoff()
+Logoff the current orchestrator session
+:return:
+
+
### pyOpenRPA.Orchestrator.__Orchestrator__.OSRemotePCRestart(inHostStr, inForceBool=True, inLogger=None)
Send signal via power shell to restart remote PC
ATTENTION: Orchestrator user need to have restart right on the Remote machine to restart PC.
@@ -1353,6 +1388,18 @@ Orchestrator restart
+### pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorScheduleGet()
+Get the schedule (schedule.readthedocs.io) from the Orchestrator
+
+Fro example you can use:
+
+
+* **Returns**
+
+ schedule module. Example see here [https://schedule.readthedocs.io/en/stable/examples.html](https://schedule.readthedocs.io/en/stable/examples.html)
+
+
+
### pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorSessionRestore(inGSettings=None)
Check _SessionLast_RDPList.json and _SessionLast_StorageDict.pickle in working directory. if exist - load into gsettings
# _SessionLast_StorageDict.pickle (binary)
@@ -1391,6 +1438,29 @@ Orchestrator session save in file
+### pyOpenRPA.Orchestrator.__Orchestrator__.OrchestratorThreadStart(inDef, \*inArgList, \*\*inArgDict)
+Execute def in new thread and pass some args with list and dict types
+
+
+* **Parameters**
+
+
+ * **inDef** – Python Def
+
+
+ * **inArgList** – args as list
+
+
+ * **inArgDict** – args as dict
+
+
+
+* **Returns**
+
+ threading.Thread object
+
+
+
### pyOpenRPA.Orchestrator.__Orchestrator__.ProcessDefIntervalCall(inDef, inIntervalSecFloat, inIntervalAsyncBool=False, inDefArgList=None, inDefArgDict=None, inDefArgGSettingsNameStr=None, inDefArgLoggerNameStr=None, inExecuteInNewThreadBool=True, inLogger=None, inGSettings=None)
Use this procedure if you need to run periodically some def. Set def, args, interval and enjoy :)
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md b/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
index 827116ac..34332273 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/03_gSettingsTemplate.md
@@ -4,6 +4,7 @@ gSettings structure
```
import os, logging, datetime, sys
+import schedule # https://schedule.readthedocs.io/en/stable/examples.html
# Technical def - return GSettings structure with examples
def __Create__():
@@ -134,6 +135,7 @@ def __Create__():
"ActivityList": []
},
"SchedulerDict": {
+ "Schedule": schedule, # https://schedule.readthedocs.io/en/stable/examples.html
"CheckIntervalSecFloat": 5.0, # Check interval in seconds
"ActivityTimeList": [
# {
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToUse.md b/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToUse.md
index 1f52e6db..4a8a5156 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToUse.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/04_HowToUse.md
@@ -47,6 +47,30 @@ elif __name__ == "__main__": # New init way - allow run as module -m PyOpenRPA.O
lPyModules = Orchestrator.OrchestratorPySearchInit(inGlobPatternStr="ControlPanel\\CP_*.py", inDefStr="SettingsUpdate", inDefArgNameGSettingsStr="inGSettings")
# Call the orchestrator def
Orchestrator.Orchestrator(inGSettings=gSettings, inDumpRestoreBool=False)
+ #import atexit
+ #def test():
+ # Orchestrator.OrchestratorLoggerGet().info(123)
+ #atexit.register(test)
+ import signal
+ import sys
+
+
+
+
+ from pyOpenRPA.Tools import Terminator
+ Terminator.Init(inLogger=Orchestrator.OrchestratorLoggerGet())
+
+ #def signal_term_handler(signal, frame):
+ # Orchestrator.OrchestratorLoggerGet().info('got SIGTERM')
+ # sys.exit(0)
+
+ #signal.signal(signal.SIGTERM, signal_term_handler)
+ import time
+ while not Terminator.IsSignalClose():
+ time.sleep(2)
+ print(999)
+ time.sleep(2)
+
else:
print("!WARNING! Current orchestrator settings do not support old type of the Orchestrator start. Use new Orchestrator type start (see v1.2.0)")
diff --git a/Wiki/ENG_Guide/markdown/Orchestrator/06_Defs Managers.md b/Wiki/ENG_Guide/markdown/Orchestrator/06_Defs Managers.md
index 969ed9a4..23bfc9f1 100644
--- a/Wiki/ENG_Guide/markdown/Orchestrator/06_Defs Managers.md
+++ b/Wiki/ENG_Guide/markdown/Orchestrator/06_Defs Managers.md
@@ -4,7 +4,7 @@
```
# EXAMPLE
-from pyOpenRPA.Orchestrator import Managers
+from pyOpenRPA.Orchestrator import Orchestrator
lProcess = Orchestrator.Managers.Process(inAgentHostNameStr="PC-DESKTOP",inAgentUserNameStr="ND", inProcessNameWOExeStr="notepad",inStartCMDStr="notepad")
```
@@ -26,6 +26,16 @@ lProcess = Orchestrator.Managers.Process(inAgentHostNameStr="PC-DESKTOP",inAgent
| Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+ |
+| `ProcessManualStopListClear`(…)
+
+ | Clear the last start tries list.
+
+ |
+| `ProcessManualStopTriggerSet`(…)
+
+ | Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
|
| `ProcessStart`(inAgentHostNameStr, …[, …])
@@ -78,6 +88,13 @@ Process instance has the following statuses:
* 5_STARTED_MANUAL
+How to use StopSafe on the robot side
+.. code-block:: python
+
+> from pyOpenRPA.Tools import StopSafe
+> StopSafe.Init(inLogger=None)
+> StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
+
**Methods:**
| `Manual2Auto`()
@@ -85,6 +102,26 @@ Process instance has the following statuses:
| Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
|
+| `ManualStopListClear`()
+
+ | Clear the last start tries list.
+
+ |
+| `ManualStopTriggerNewStart`()
+
+ | Log new start event.
+
+ |
+| `ManualStopTriggerSet`(inMSTdTSecFloat, inMSTdNInt)
+
+ | Set ManualStopTrigger (MST) to switch to STOPPED MANUAL if specified count of start fails will be catched in specified time period
+
+ |
+| `MuteWait`()
+
+ | Internal def.
+
+ |
| `RestartForce`([inIsManualBool])
| Manual/Auto restart force.
@@ -95,16 +132,21 @@ Process instance has the following statuses:
| Manual/Auto restart safe.
|
-| `ScheduleWeekDay`()
+| `ScheduleStatusCheckEverySeconds`([…])
- | Some template def to work with schedule package.
+ | Run status check every interval in second you specify.
- |
+ |
| `Start`([inIsManualBool])
| Manual/Auto start.
|
+| `StartCheck`()
+
+ | Start program if auto stopped (0_STOPPED).
+
+ |
| `StatusChangeLog`()
| Lof information about status change
@@ -135,11 +177,21 @@ Process instance has the following statuses:
| Manual/Auto stop force.
|
+| `StopForceCheck`()
+
+ | Stop force program if auto started (4_STARTED).
+
+ |
| `StopSafe`([inIsManualBool])
| Manual/Auto stop safe.
|
+| `StopSafeCheck`()
+
+ | Stop safe program if auto started (4_STARTED).
+
+ |
#### Manual2Auto()
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
@@ -151,6 +203,55 @@ Remove Manual flag from process (if exists) - it will allow the schedule operati
+#### ManualStopListClear()
+Clear the last start tries list.
+
+
+* **Returns**
+
+ None
+
+
+
+#### ManualStopTriggerNewStart()
+Log new start event. Check if it is applicable. Change status if ManualStop trigger criteria is applied
+
+
+* **Returns**
+
+ # 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
+#### ManualStopTriggerSet(inMSTdTSecFloat: float, inMSTdNInt: int)
+Set ManualStopTrigger (MST) to switch to STOPPED MANUAL if specified count of start fails will be catched in specified time period
+
+
+* **Parameters**
+
+
+ * **inMSTdTSecFloat** – Time perios in seconds
+
+
+ * **inMSTdNInt** – Counts of the start tries
+
+
+
+* **Returns**
+
+ None
+
+
+
+#### MuteWait()
+Internal def. Wait when class is apply to send new activities to the agent
+
+
+* **Returns**
+
+
+
+
#### RestartForce(inIsManualBool=True)
Manual/Auto restart force. Force restart dont wait process termination - it just terminate process now ant then start it.
Manual restart will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -164,7 +265,8 @@ Manual restart will block scheduling execution. To return schedule execution use
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### RestartSafe(inIsManualBool=True)
@@ -180,20 +282,29 @@ Manual stop safe will block scheduling execution. To return schedule execution u
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
-#### ScheduleWeekDay()
-Some template def to work with schedule package. Configure schedule to start. Stop process in auto mode in all sele.
+
+#### ScheduleStatusCheckEverySeconds(inIntervalSecondsInt=120)
+Run status check every interval in second you specify.
+
+
+* **Parameters**
+
+ **inIntervalSecondsInt** – Interval in seconds. Default is 120
+
* **Returns**
-
+ None
+
#### Start(inIsManualBool=True)
-Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
+Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto.
+Will not start if STOP SAFE is now and don’t start auto is stopped manual now
* **Parameters**
@@ -208,6 +319,16 @@ Manual/Auto start. Manual start will block scheduling execution. To return sched
+#### StartCheck()
+Start program if auto stopped (0_STOPPED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
#### StatusChangeLog()
Lof information about status change
@@ -233,7 +354,8 @@ Check process status and run it if auto stopped self.mStatusStr is “0_STOPPED
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### StatusCheckStopForce()
@@ -242,7 +364,8 @@ Check process status and auto stop force it if self.mStatusStr is 4_STARTED
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### StatusCheckStopSafe()
@@ -255,7 +378,7 @@ Check process status and auto stop safe it if self.mStatusStr is 4_STARTED
#### StopForce(inIsManualBool=True)
-Manual/Auto stop force. Force stop dont wait process termination - it just terminate process now.
+Manual/Auto stop force. Force stop don’t wait process termination - it just terminate process now.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -271,6 +394,16 @@ Manual stop safe will block scheduling execution. To return schedule execution u
+#### StopForceCheck()
+Stop force program if auto started (4_STARTED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
#### StopSafe(inIsManualBool=True)
Manual/Auto stop safe. Stop safe is the operation which send signal to process to terminate own work (send term signal to process). Managers.Process wait for the mStopSafeTimeoutSecFloat seconds. After that, if process is not terminated - self will StopForce it.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -284,7 +417,18 @@ Manual stop safe will block scheduling execution. To return schedule execution u
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
+#### StopSafeCheck()
+Stop safe program if auto started (4_STARTED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
### pyOpenRPA.Orchestrator.Managers.Process.ProcessGet(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str)
@@ -341,6 +485,58 @@ Remove Manual flag from process (if exists) - it will allow the schedule operati
+### pyOpenRPA.Orchestrator.Managers.Process.ProcessManualStopListClear(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str)
+Clear the last start tries list.
+
+
+* **Parameters**
+
+
+ * **inAgentHostNameStr** – Agent hostname in any case. Required to identify Process
+
+
+ * **inAgentUserNameStr** – Agent user name in any case. Required to identify Process
+
+
+ * **inProcessNameWOExeStr** – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+
+
+
+* **Returns**
+
+ None
+
+
+
+### pyOpenRPA.Orchestrator.Managers.Process.ProcessManualStopTriggerSet(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str, inMSTdTSecFloat: float, inMSTdNInt: int)
+Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
+
+* **Parameters**
+
+
+ * **inAgentHostNameStr** – Agent hostname in any case. Required to identify Process
+
+
+ * **inAgentUserNameStr** – Agent user name in any case. Required to identify Process
+
+
+ * **inProcessNameWOExeStr** – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+
+
+ * **inMSTdTSecFloat** – Time periods in seconds
+
+
+ * **inMSTdNInt** – Counts of the start tries
+
+
+
+* **Returns**
+
+ None
+
+
+
### pyOpenRPA.Orchestrator.Managers.Process.ProcessStart(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str, inIsManualBool: bool = True)
Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -526,6 +722,16 @@ Manual stop safe will block scheduling execution. To return schedule execution u
| Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+ |
+| `ProcessManualStopListClear`(…)
+
+ | Clear the last start tries list.
+
+ |
+| `ProcessManualStopTriggerSet`(…)
+
+ | Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
|
| `ProcessStart`(inAgentHostNameStr, …[, …])
@@ -578,6 +784,13 @@ Process instance has the following statuses:
* 5_STARTED_MANUAL
+How to use StopSafe on the robot side
+.. code-block:: python
+
+> from pyOpenRPA.Tools import StopSafe
+> StopSafe.Init(inLogger=None)
+> StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
+
**Methods:**
| `Manual2Auto`()
@@ -585,6 +798,26 @@ Process instance has the following statuses:
| Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
|
+| `ManualStopListClear`()
+
+ | Clear the last start tries list.
+
+ |
+| `ManualStopTriggerNewStart`()
+
+ | Log new start event.
+
+ |
+| `ManualStopTriggerSet`(inMSTdTSecFloat, inMSTdNInt)
+
+ | Set ManualStopTrigger (MST) to switch to STOPPED MANUAL if specified count of start fails will be catched in specified time period
+
+ |
+| `MuteWait`()
+
+ | Internal def.
+
+ |
| `RestartForce`([inIsManualBool])
| Manual/Auto restart force.
@@ -595,16 +828,21 @@ Process instance has the following statuses:
| Manual/Auto restart safe.
|
-| `ScheduleWeekDay`()
+| `ScheduleStatusCheckEverySeconds`([…])
- | Some template def to work with schedule package.
+ | Run status check every interval in second you specify.
- |
+ |
| `Start`([inIsManualBool])
| Manual/Auto start.
|
+| `StartCheck`()
+
+ | Start program if auto stopped (0_STOPPED).
+
+ |
| `StatusChangeLog`()
| Lof information about status change
@@ -635,11 +873,21 @@ Process instance has the following statuses:
| Manual/Auto stop force.
|
+| `StopForceCheck`()
+
+ | Stop force program if auto started (4_STARTED).
+
+ |
| `StopSafe`([inIsManualBool])
| Manual/Auto stop safe.
|
+| `StopSafeCheck`()
+
+ | Stop safe program if auto started (4_STARTED).
+
+ |
#### Manual2Auto()
Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
@@ -651,6 +899,55 @@ Remove Manual flag from process (if exists) - it will allow the schedule operati
+#### ManualStopListClear()
+Clear the last start tries list.
+
+
+* **Returns**
+
+ None
+
+
+
+#### ManualStopTriggerNewStart()
+Log new start event. Check if it is applicable. Change status if ManualStop trigger criteria is applied
+
+
+* **Returns**
+
+ # 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
+#### ManualStopTriggerSet(inMSTdTSecFloat: float, inMSTdNInt: int)
+Set ManualStopTrigger (MST) to switch to STOPPED MANUAL if specified count of start fails will be catched in specified time period
+
+
+* **Parameters**
+
+
+ * **inMSTdTSecFloat** – Time perios in seconds
+
+
+ * **inMSTdNInt** – Counts of the start tries
+
+
+
+* **Returns**
+
+ None
+
+
+
+#### MuteWait()
+Internal def. Wait when class is apply to send new activities to the agent
+
+
+* **Returns**
+
+
+
+
#### RestartForce(inIsManualBool=True)
Manual/Auto restart force. Force restart dont wait process termination - it just terminate process now ant then start it.
Manual restart will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -664,7 +961,8 @@ Manual restart will block scheduling execution. To return schedule execution use
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### RestartSafe(inIsManualBool=True)
@@ -680,20 +978,29 @@ Manual stop safe will block scheduling execution. To return schedule execution u
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
-#### ScheduleWeekDay()
-Some template def to work with schedule package. Configure schedule to start. Stop process in auto mode in all sele.
+
+#### ScheduleStatusCheckEverySeconds(inIntervalSecondsInt=120)
+Run status check every interval in second you specify.
+
+
+* **Parameters**
+
+ **inIntervalSecondsInt** – Interval in seconds. Default is 120
+
* **Returns**
-
+ None
+
#### Start(inIsManualBool=True)
-Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
+Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto.
+Will not start if STOP SAFE is now and don’t start auto is stopped manual now
* **Parameters**
@@ -708,6 +1015,16 @@ Manual/Auto start. Manual start will block scheduling execution. To return sched
+#### StartCheck()
+Start program if auto stopped (0_STOPPED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
#### StatusChangeLog()
Lof information about status change
@@ -733,7 +1050,8 @@ Check process status and run it if auto stopped self.mStatusStr is “0_STOPPED
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### StatusCheckStopForce()
@@ -742,7 +1060,8 @@ Check process status and auto stop force it if self.mStatusStr is 4_STARTED
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
#### StatusCheckStopSafe()
@@ -755,7 +1074,7 @@ Check process status and auto stop safe it if self.mStatusStr is 4_STARTED
#### StopForce(inIsManualBool=True)
-Manual/Auto stop force. Force stop dont wait process termination - it just terminate process now.
+Manual/Auto stop force. Force stop don’t wait process termination - it just terminate process now.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -771,6 +1090,16 @@ Manual stop safe will block scheduling execution. To return schedule execution u
+#### StopForceCheck()
+Stop force program if auto started (4_STARTED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
#### StopSafe(inIsManualBool=True)
Manual/Auto stop safe. Stop safe is the operation which send signal to process to terminate own work (send term signal to process). Managers.Process wait for the mStopSafeTimeoutSecFloat seconds. After that, if process is not terminated - self will StopForce it.
Manual stop safe will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -784,7 +1113,18 @@ Manual stop safe will block scheduling execution. To return schedule execution u
* **Returns**
-
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
+
+
+#### StopSafeCheck()
+Stop safe program if auto started (4_STARTED).
+
+
+* **Returns**
+
+ Process status. See self.mStatusStr. 0_STOPPED 1_STOPPED_MANUAL 2_STOP_SAFE 3_STOP_SAFE_MANUAL 4_STARTED 5_STARTED_MANUAL
+
### pyOpenRPA.Orchestrator.Managers.Process.ProcessGet(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str)
@@ -841,6 +1181,58 @@ Remove Manual flag from process (if exists) - it will allow the schedule operati
+### pyOpenRPA.Orchestrator.Managers.Process.ProcessManualStopListClear(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str)
+Clear the last start tries list.
+
+
+* **Parameters**
+
+
+ * **inAgentHostNameStr** – Agent hostname in any case. Required to identify Process
+
+
+ * **inAgentUserNameStr** – Agent user name in any case. Required to identify Process
+
+
+ * **inProcessNameWOExeStr** – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+
+
+
+* **Returns**
+
+ None
+
+
+
+### pyOpenRPA.Orchestrator.Managers.Process.ProcessManualStopTriggerSet(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str, inMSTdTSecFloat: float, inMSTdNInt: int)
+Remove Manual flag from process (if exists) - it will allow the schedule operations via def StatusCheckStart(self): def StatusCheckStorForce(self): def StatusCheckStopSafe(self):
+
+
+* **Parameters**
+
+
+ * **inAgentHostNameStr** – Agent hostname in any case. Required to identify Process
+
+
+ * **inAgentUserNameStr** – Agent user name in any case. Required to identify Process
+
+
+ * **inProcessNameWOExeStr** – The process name without extension .exe (the key of the Process instance). Any case - will be processed to the upper case
+
+
+ * **inMSTdTSecFloat** – Time periods in seconds
+
+
+ * **inMSTdNInt** – Counts of the start tries
+
+
+
+* **Returns**
+
+ None
+
+
+
### pyOpenRPA.Orchestrator.Managers.Process.ProcessStart(inAgentHostNameStr: str, inAgentUserNameStr: str, inProcessNameWOExeStr: str, inIsManualBool: bool = True)
Manual/Auto start. Manual start will block scheduling execution. To return schedule execution use def Manual2Auto
@@ -1010,8 +1402,8 @@ Manual stop safe will block scheduling execution. To return schedule execution u
```
# EXAMPLE
-from pyOpenRPA.Orchestrator import Managers
- lCP = Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
+from pyOpenRPA.Orchestrator import Orchestrator
+ lCP = Orchestrator.Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
```
**Classes:**
diff --git a/Wiki/ENG_Guide/markdown/Tools/02_Defs.md b/Wiki/ENG_Guide/markdown/Tools/02_Defs.md
new file mode 100644
index 00000000..69c0e273
--- /dev/null
+++ b/Wiki/ENG_Guide/markdown/Tools/02_Defs.md
@@ -0,0 +1,48 @@
+# 2. Defs StopSafe
+
+How to use StopSafe on the robot side
+
+# How to use
+# from pyOpenRPA.Tools import StopSafe
+# StopSafe.Init(inLogger=None)
+# StopSafe.IsSafeStop() # True - WM_CLOSE SIGNAL has come. taskkill /im someprocess.exe
+
+**Functions:**
+
+| `Init`([inLogger])
+
+ | Init the StopSafe module.
+
+ |
+| `IsStopSafe`()
+
+ | Check if stop signal has come.
+
+ |
+
+### pyOpenRPA.Tools.StopSafe.Init(inLogger=None)
+Init the StopSafe module. After that you can use def IsStopSafe() to check if close signal has come.
+
+
+* **Parameters**
+
+ **inLogger** – Logger to log messages about StopSafe
+
+
+
+* **Returns**
+
+
+
+
+### pyOpenRPA.Tools.StopSafe.IsStopSafe()
+Check if stop signal has come.
+
+
+* **Returns**
+
+
+
+## References
+
+[reStructuredText](http://docutils.sourceforge.net/rst.html)
diff --git a/Wiki/ENG_Guide/markdown/index.md b/Wiki/ENG_Guide/markdown/index.md
index 2ffa3bd8..cfd8b077 100644
--- a/Wiki/ENG_Guide/markdown/index.md
+++ b/Wiki/ENG_Guide/markdown/index.md
@@ -359,3 +359,10 @@ In wiki you can use the following docs:
* References
+
+
+
+* 2. Defs StopSafe
+
+
+ * References