Merci Jean-François, effectivement c’est plus simple en Français :)
Sais-tu où je pourrai trouver un exemple de ce fonctionnement du design pattern 
Role en WO?


Pouvons-nous communiquer en direct? Je développe en WO depuis 8 ans et j’ai un 
problème sur le déploiement. Pourrais-tu m’aider sur ce 2nd point?

Rémy.

> Le 28 nov. 2017 à 17:22, Jean-François Veillette 
> <jean_francois_veille...@yahoo.ca> a écrit :
> 
> Bonjour Remy, je me permets de te répondre directement en français, ce sera 
> probablement plus facile pour nous deux de communiquer dans notre langue 
> maternelle.
> 
> 
> Ce que Chuck propose c’est d’utilise le patron des « Roles » au lieu 
> d’utiliser une structure de classe.
> L’idée étant qu’un objet peut changer de rôle, mais ne peut pas changer de 
> classe.
> La logique qui aurait été mise dans la classe sera donc reléguée dans le rôle 
> (en « sous-traitance »).
> 
> Pour ce qui est des relations polymorphes proprement dites, EOF n’a pas de 
> problème avec ça.
> Cependant pour réduire le nombre de requêtes SQL généré par EOF, on peut 
> l’aider en encodant la classe (en fait, cela fera référence à sa EOEntity) 
> dans la clef primaire.
> En simplifiant tu aurais quelque chose qui ressemblera à
>       0-1024 sont les objets d’entité A
>       1025-2048 sont les objets d’entité B
>       … etc.
> En fait, l’idée est de prendre un long (64 bits) et d’en réserver un certain 
> nombre bits pour y encoder l’entité.  De mémoire, j’avais un encodage 
> d’entité sur 8 bits (256 entités possibles) et une séquence de 56bits (bien 
> assez long pour mon cas d’utilisation).
> J’ai utilisé cette technique avec succès, ça simplifie beaucoup les cas de 
> relations et les clefs externes.  Si je pointe sur une hiérarchie X, avec la 
> clef je peux donc extraire exactement la partie « entité » et donc à quelle 
> classe (ou quelle table) je fais référence.
> 
> Bienvenue dans le monde WO !
> --
> Jean-François Veillette
> Analyste programmeur / Software Engineer
> 
> 
>> On Nov 28, 2017, at 4:47 AM, remy <r...@algodata.fr 
>> <mailto:r...@algodata.fr>> wrote:
>> 
>> Hi Chuck,
>> 
>> How do I this? I think change my method for create my EntitySub but it 
>> interests me to know this solution. Mostly : "discarding all cached 
>> knowledge of EO". 
>> 
>>> If that is what you need, then look at the Role design pattern instead
>> > Where I can find it?
>> 
>> Rémy
>> 
>>> Le 24 nov. 2017 à 19:05, Chuck Hill <ch...@gevityinc.com 
>>> <mailto:ch...@gevityinc.com>> a écrit :
>>> 
>>> Remy,
>>>  
>>> You *can* get an EO to change its class over time by changing the 
>>> restricting qualifier, discarding all cached knowledge of EO and doing a 
>>> fetch.  *But* that is really, really not recommended.  If that is what you 
>>> need, then look at the Role design pattern instead.  That is probably 
>>> closer to what you need.
>>>  
>>> If you just need to create instances of different classes based on a string 
>>> (EntitySub.ENTITY_NAME) then create a factory method that takes the string 
>>> and returns an instance of a sub-class of EntityAbstract.  All of the 
>>> information needed to do this is in the model and can be referenced at 
>>> runtime.  It is quite simple.  The way you are doing it below is just wrong.
>>>  
>>> Chuck
>>>  
>>> From: Webobjects-dev 
>>> <webobjects-dev-bounces+chill=gevityinc....@lists.apple.com 
>>> <mailto:webobjects-dev-bounces+chill=gevityinc....@lists.apple.com>> on 
>>> behalf of remy <r...@algodata.fr <mailto:r...@algodata.fr>>
>>> Date: Friday, November 24, 2017 at 2:30 AM
>>> To: "webobjects-dev@lists.apple.com 
>>> <mailto:webobjects-dev@lists.apple.com>" <webobjects-dev@lists.apple.com 
>>> <mailto:webobjects-dev@lists.apple.com>>
>>> Subject: Polymorphic Relationship
>>>  
>>> Hi,
>>> 
>>> I want make an polymorphic entity.
>>> 
>>> I have an Entity Abstract named "EntityAbstract" and a subclass Entity 
>>> named "EntitySub" where the qualifier is (refEntityName=‘EntitySub').
>>> I have third Entity named "Relation" that has an relationship with 
>>> "EntitySub".
>>> 
>>> I have a problem when :
>>> 
>>> EOEditingContext editingContext = ERXEC.newEditingContext();
>>>  
>>> int relationID = Integer.valueOf(relation().primaryKeyInTransaction());
>>>  
>>> EntityAbstract entityAbstract = 
>>> ERXEOControlUtilities.createAndInsertObject(editingContext(), 
>>> EntityAbstract.class);
>>> entityAbstract.setRefEntityName(EntitySub.ENTITY_NAME);
>>> entityAbstract.setRefEntityID(relationID);
>>>  
>>> editingContext().saveChanges();
>>>  
>>> ERXEOControlUtilities.refreshObject(relation());
>>> for (EntityAbstract e : relation().entitySubs())
>>>          System.err.println(e); // Print <your.app.model.EntityAbstract 
>>>  
>>> How to print <Entity pk:"..."> and not <EntityAbstract pk:"..."> ?
>>> 
>>> I don't want use the class "Entity" for 
>>> ERXEOControlUtilities.createAndInsertObject
>>> 
>>> Do you have an idea?
>>> 
>>> I tested :
>>> 
>>> eo.invalidateAllObjects(); eo.parentObjectStore().invalidateAllObjects(); 
>>> eo.rootObjectStore().invalidateAllObjects();
>>> It does not work...
>>> 
>>> The project : https://github.com/algodata44/PolymorphicRelationship 
>>> <https://github.com/algodata44/PolymorphicRelationship>
>>> Use DB H2
>>>  
>>> Thx
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com 
>> <mailto:Webobjects-dev@lists.apple.com>)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca
>>  
>> <https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca>
>> 
>> This email sent to jean_francois_veille...@yahoo.ca 
>> <mailto:jean_francois_veille...@yahoo.ca>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to