WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Comment savoir si mon objet de données possède une balise AnyAttribute ?

Vous pouvez aisément déterminer si des instances d'un objet données comportent un ensemble de valeurs anyAttribute en vérifiant leurs propriétés pour savoir si les propriétés ouvertes représentent des attributs.

L'objet données ne prévoit pas de mécanisme pour déterminer si un type d'objet données inclut une balise anyAttribute. Seuls les objets données comportent un concept d'ouverture qui s'applique aux balises any et <anyAttribute/> et qui permet l'ajout de propriétés supplémentaires. S'il est vrai que si un objet données a défini isOpen() = true et isSequenced() = false, il doit inclure une balise anyAttribute, si isOpen() = true et isSequenced() = true, le type d'objet données pouvant ou non inclure une balise anyAttribute.

L'objet données fournit des méthodes d'interrogation des métadonnées pour répondre à l'aide d'un programme à cette question et bien d'autres sur la structure XSD qui a servi à le générer. Le modèle InfoSet peut être interrogé pour déterminer si nécessaire l'existence de la balise anyAttribute. Parce que la balise anyAttribute est unique et que sa valeur peut être ou non true, les objets métier fournissent également une méthode BOXSDHelper hasAnyAttribute(Type) pour déterminer si la définition d'un attribut ouvert sur cet objet données produira un résultat valide. L'exemple de code suivant illustre ces concepts :

	DataObject dobj = ...

	// Vérifiez si le type est ouvert. S'il ne l'est pas, aucune
	// valeur anyAttribute ne peut y être définie.
	boolean isOpen = dobj.getType().isOpen() ;

	si (!isOpen) return false ;  // Aucune valeur anyAttribute définie

	// Les propriétés ouvertes sont ajoutées à la liste des propriétés de l'instance, mais pas
	// la liste des propriétés. Par conséquent, la comparaison de leurs tailles peut permettre de déterminer facilement
	// si des données ouvertes sont définies
	int instancePropertyCount = dobj.getInstanceProperties().size();
	int definedPropertyCount = dobj.getType().getProperties().size();

	// Si leur taille est identique, aucun contenu ouvert n'est défini
	si (instancePropertyCount == definedPropertyCount) return false ;

	// Vérifiez les propriétés du contenu ouvert pour déterminer l'une d'elles constituent des attributs
	pour (int i=definedPropertyCount; i<instancePropertyCount; i++)
	{
	    Property prop = (Property)dobj.getInstanceProperties().get(i);
	    si (boXsdHelper.isAttribute(prop))
	    {
	        return true ;  // Valeur anyAttribute trouvée
	    }
	}

	return false ;  // Aucune valeur anyAttribute définie

concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cbo_howdataobjany.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).