Dans la section précédente, nous avons exploré le processus d'installation et initié l'écriture de l'IRIS en Python natif. Nous allons maintenant examiner la traversée globale et nous intéresser aux objets de classe IRIS.
get : cette fonction est utilisée pour obtenir des valeurs à partir du nœud de traversée.
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,''))
PythonPython
node et items : parcours à un seul niveau avec nœud et obtenir les mêmes valeurs 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)
PythonPython
# 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)
PythonPython
nextsubscript : contrairement au code ci-dessus, vous pouvez utiliser nextsubscript pour obtenir facilement l'indice suivant
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}' )
PythonPython
Classes et objets
Vous pouvez appeler les méthodes de classe, les méthodes de la définition de classe en utilisant la fonction spécifique. Comme je l'ai mentionné plus tôt, les méthodes de conversion de type sont essentielles pour obtenir la réponse appropriée d'IRIS.
classMethodValue : appelez la méthode Classmethod depuis Python sans initialiser l'objet comme (ex : Do ##Class(Test.MYTest).FirstNameGetStored(1)
) et obtenez la valeur par défaut de « string » en Python. Il existe différentes méthodes de conversion de type disponibles pour la valeur de retour attendue au lieu de la chaîne. Veuillez vous référer ci-dessous.
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
PythonPython
classMethodObject : Fonction importante pour instancier un nouvel objet IRIS ou ouvrir l'objet existant. Définissez les propriétés et appelez les méthodes d'instance, etc.
Nouvel objet IRIS : initiez l'objet de classe pour Test.MYTest et définissez les propriétés.
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
PythonPython
Ouvrez l'objet IRIS : dans le code ci-dessous. Ouvrez l'objet de classe Test.MyTest et récupérez les valeurs Birthdate et RegisteredDate à partir de l'objet avec l'ID = « 2 » et convertissez RegisteredDate en liste 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
PythonPython
Définition de la classe IRIS que j'ai utilisée pour la démonstration du code Python de classe et d'objet
Méthodes de conversion de type :
il s'agit de quelques méthodes de conversion de type permettant de récupérer les valeurs de retour appropriées d'IRIS
classMethodValue() - pour appeler des méthodes de classe générales
classMethodVoid - Aucune valeur de retour
classMethodValue - string par défaut
classMethodFloat - valeur float
invoke() - est utilisé pour appeler les méthodes d'instance. Vous devez initialiser l'objet pour appeler ces fonctions d'appel
invokeString - string par défaut
invokeFloat - float par défaut
invokeInteger - integer par défaut
Nous aborderons les fonctions, les appels de procédure dans les routines et d'autres fonctionnalités dans le prochain article.