Na sessão anterior, exploramos o processo de instalação e começamos a escrever o IRIS em Python nativo. Agora procederemos a examinar a global percorrida e interatuar com os objetos da classe IRIS
get: esta função se utiliza para obter valores do nó percorrido
def traversal_firstlevel_subscript():
"""
^mygbl(235)="test66,62" and ^mygbl(912)="test118,78"
"""
for i in irispy.node('^mygbl'):
print(i, gbl_node.get(i,''))
node e items: percorrido de um só nível com node e obtenção dos valores da mesma maeira que $Order(^mygbl(subscript), direction, data).
#single level traversal
def traversal_dollar_order_single_level():
for sub,val in irispy.node('^mygbl').items():
print('subscript:',sub,' value:', val)
# multi level traversal
def traversal_dollar_order_multi_level():
for sub,val in irispy.node('^mygbl').items():
print(f'sub type is: {type(sub)} {sub} and val type is {type(val)}')
for sub1,val1 in irispy.node('^mygbl',sub).items():
print('subscript:',sub1,' value:', val1)
nextsubscript: diferente do código anterior, pode usar nextsubstricpt para obter o subíndice seguinte facilmente.
def traversal_dollar_order_use_nextsubscript():
direction = 0
next_sub = ''
while next_sub != None:
next_sub = irispy.nextSubscript(direction,'^mygbl', next_sub)
print(f'next subscript = {next_sub}' )
next_sub1=''
if next_sub == None:return
while next_sub1 != None:
next_sub1 = irispy.nextSubscript(direction,'^mygbl',next_sub,next_sub1)
print(f'1st subscript = {next_sub} next subscript {next_sub1}' )
Clases e Objetos
Você pode chamar os classmethods (métodos de classe) desde a definição da classe usando a função específica. Como mencionei anteriormente, os Typecast Methods são cruciais para obter a resposta adequada de IRIS.
classMethodValue:Chama o Classmethod desde o Python sem iniciar o objeto, da mesma maneira que (por exemplo):
Do ##Class(Test.MYTest).FirstNameGetStored(1)
) e obtem um valor predeterminado de tipo "string" em Python. Há diferentes métoods de conversão de tipo disponíveis para o valor de retorno esperado no lugar de string. Por favor, veja o seguinte:
def get_clsmethod_value():
print(irispy.classMethodValue('Test.MYTest','FirstNameGetStored',1)) #return string
date_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog') #return +$H value
print(irispy.classMethodVoid('Test.MYTest','SetTestGlobal','test')) # no return resposne
classMethodObject: Função importante para instanciar um novo objeto IRIS ou abrir um objeto existente. Configure as propriedades e invoque métodos de instância, etc.
Nuevo objeto IRIS: Inicie o objeto de classe para Test.MYTest e configure as propriedades.
def cls_object_new():
"""
initiate new object and store
"""
iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%New','ashok','kumar')
birthdate_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog','12/12/1990')
horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog')
iris_proxy_obj.set('BirthDate',birthdate_horolog) #set birthdate property
iris_proxy_obj.set('RegisteredDate',horolog) #set the RegisteredDate property
status = iris_proxy_obj.invoke('%Save') #call instance method
return status
Abrir objeto IRIS: No código que se segue, abra o objeto da classee Test.MyTest e obtenha os valores de Birthdate e RegisteredDate do objectid "2", e converta RegisteredDate em uma lista Python.
def cls_object_open():
iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%OpenId',2)
birth_date = iris_proxy_obj.get('BirthDate')
full_name iris_proxy_obj.InvokeString("GetFullName")
data = [birth_date, iris_proxy_obj.get('RegisteredDate')]
return data
Definição de classe IRIS que utilizei para a demonstração do código de classe e objeto em Python.
Typecast methods:
Estes são alguns métodos typecast para recuperar valores de retorno adequados de IRIS:
classMethodValue() - para chamar a métodos de classe gerais.
classMethodVoid - Sem valor de retorno
classMethodValue - String por padrão
classMethodFloat - Valor de retorno float
invoke() - se utiliza para chamar aos métodos de instância. Você deve iniciar o objeto para chamar a esta invocação de funções
invokeFloat - valor de retorno float
invokeInteger - valor de retorno inteiro
Cobriremos as funções, chamadas a procedimentos em rotinas e outras funcionalidades no próximo artigo.