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,''))
node et items : parcours à un seul niveau avec nœud et obtenir les mêmes valeurs que $Order(^mygbl(subscript), direction, data)
def traversal_dollar_order_single_level():
for sub,val in irispy.node('^mygbl').items():
print('subscript:',sub,' value:', val)
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 : 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}' )
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.
Avant cela, il est important de noter que, contrairement aux types de données IRIS, pour lesquels nous pouvons tout traiter comme des chaînes, les types de données Python tels que int, str, bool et list sont classés comme des objets. Chacun de ces types possède ses propres attributs et méthodes ; par exemple, le type de chaîne Python inclut des fonctions telles que .upper() et .lower(), qui ne sont pas applicables aux autres types de données. Par conséquent, IRIS est équipé de la capacité de convertir les valeurs de chaîne IRIS en objets de type de données pris en charge par Python grâce à l'utilisation de méthodes de conversion de type. Cette fonctionnalité s'applique également aux méthodes de classe, aux fonctions définies par l'utilisateur et aux procédures. Alternativement, il faut utiliser les fonctions de conversion de type de Python pour obtenir le type de données souhaité.
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))
date_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog')
print(irispy.classMethodVoid('Test.MYTest','SetTestGlobal','test'))
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)
iris_proxy_obj.set('RegisteredDate',horolog)
status = iris_proxy_obj.invoke('%Save')
return status
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
Définition de la classe IRIS que j'ai utilisée pour la démonstration du code Python de classe et d'objet
Class Test.MYTest Extends %Persistent
{
Property FirstName As %String
Property LastName As %String
Property BirthDate As %Date
Property RegisteredDate As %Date
Method %OnNew(FirstName, LastName) As %Status
{
Set ..FirstName = FirstName
Set ..LastName = LastName
Return $$$OK
}
ClassMethod GetHorolog(pDate As %String = "") [ CodeMode = expression ]
{
$Select(pDate'="":$ZDH(pDate),1: +$H)
}
Method GetFullName() As %String
{
Return ..FirstName_","_..LastName
}
}
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
classMethodInteger - Renvoie une valeur integer
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.