import pdb import json import subprocess import zlib import os from . import ProcessCommunicator import importlib import traceback import logging import sys import datetime import struct import shutil from pyOpenRPA.Robot import UIDesktop global gSettingsDict #################################### #Info: Main module of the Robot app (OpenRPA - Robot) #################################### #Usage: #Here you can run some activity or list of activities #After import this module you can use the folowing functions: #ActivityRun(inActivitySpecificationDict): outActivityResultDict - function - run activity (function or procedure) #ActivityRunJSON(inActivitySpecificationDictJSON): outActivityResultDictJSON #ActivityListRun(inActivitySpecificationDictList): outActivityResultDictList - function - run list of activities (function or procedure) #ActivityListRunJSON(inActivitySpecificationDictListJSON): outActivityResultDictListJSON #Naming: #Activity - some action/list of actions #Module - Any *.py file, which consist of area specific functions #Argument #inActivitySpecificationDict: #{ # ModuleName: <"GUI"|..., str>, # ActivityName: , # ArgumentList: [, ...] - optional, # ArgumentDict: {:, ...} - optional #} #outActivityResultDict: #{ # ActivitySpecificationDict: { # ModuleName: <"GUI"|..., str>, # ActivityName: , # ArgumentList: [, ...] - optional, # ArgumentDict: {: , ...} - optional # }, # ErrorFlag: , # ErrorMessage: - required if ErrorFlag is true, # ErrorTraceback: - required if ErrorFlag is true, # Result: - required if ErrorFlag is false #} #################### #Section: Activity #################### def ActivityRun(inActivitySpecificationDict): lResponseObject = {} #Выполнить отправку в модуль UIDesktop, если ModuleName == "UIDesktop" if inActivitySpecificationDict["ModuleName"] == "UIDesktop": if "ArgumentList" not in inActivitySpecificationDict: inActivitySpecificationDict["ArgumentList"]=[] if "ArgumentDict" not in inActivitySpecificationDict: inActivitySpecificationDict["ArgumentDict"]={} #Run the activity try: #Найти функцию lFunction=getattr(UIDesktop,inActivitySpecificationDict["ActivityName"]) #Выполнить вызов и записать результат lResponseObject["Result"]=lFunction(*inActivitySpecificationDict["ArgumentList"],**inActivitySpecificationDict["ArgumentDict"]) except Exception as e: #Установить флаг ошибки и передать тело ошибки lResponseObject["ErrorFlag"]=True lResponseObject["ErrorMessage"]=str(e) lResponseObject["ErrorTraceback"]=traceback.format_exc() #Остальные модули подключать и выполнять здесь else: lArgumentList=[] if "ArgumentList" in inActivitySpecificationDict: lArgumentList=inActivitySpecificationDict["ArgumentList"] lArgumentDict={} if "ArgumentDict" in inActivitySpecificationDict: lArgumentDict=inActivitySpecificationDict["ArgumentDict"] #Подготовить результирующую структуру lResponseObject={"ActivitySpecificationDict":inActivitySpecificationDict,"ErrorFlag":False} try: #Подключить модуль для вызова lModule=importlib.import_module(inActivitySpecificationDict["ModuleName"]) #Найти функцию lFunction=getattr(lModule,inActivitySpecificationDict["ActivityName"]) #Выполнить вызов и записать результат lResponseObject["Result"]=lFunction(*lArgumentList,**lArgumentDict) except Exception as e: #Установить флаг ошибки и передать тело ошибки lResponseObject["ErrorFlag"]=True lResponseObject["ErrorMessage"]=str(e) lResponseObject["ErrorTraceback"]=traceback.format_exc() return lResponseObject ######################################################### #Run list of activities ######################################################### def ActivityListRun(inActivitySpecificationDictList): lResult=[] for lItem in inActivitySpecificationDictList: lResult.append(ActivityRun(lItem)) return lResult