Modifier un formulaire de création d'objet

Aller en bas

Modifier un formulaire de création d'objet

Message  Francois Birot le Jeu 18 Sep - 17:15

bonjour,
je viens de rajouter un attribut au type Product Line et j'aimerai donc que cette attribut apparaisse dans le formulaire de création d'un Product Line dans le thin client.
J'ai beau chercher dans le Business client, je ne vois pas de webform correspondant.
J'utilise Matrix depuis vraiment pas longtemps d'ou mon ignorance, mais il n'y a quand meme pas besoin de modifier les jsp pour pouvoir modifier ce formulaire de création si ?

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Jeu 18 Sep - 20:05

-Le site est justement fait pour ces questions-

Là, il va falloir que tu sois un peu plus précis sur l'application que tu utilises (Engineering Central, Info Central, ...) et la version (10.7, 10.8, ...).

En effet, en standard -suivant la version matrix-, tu as une page JSP qui s'occupe de récupérer tous les attributs -non cachés- d'un type et de les renvoyer à la page de création (modification).
Après, tu peux aussi avoir un webform, que tu trouveras facilement dans ton Spinner en recherchant les autres attributs du type "Product Line".

Donc, si tu vois ton attribut sur ton type dans le module business, que tu peux aussi le voir en thick client (module matrix), tout est bon. Il faut juste vérifier la page de création.
Afin d'avoir une piste, il te suffit de faire clique-droit sur la page de création et de voir son nom. Si c'est *WebForm*.jsp ou *PowerView*.jsp alors il y a un webform. Si c'est plus emxInfoCreatePartDialog.jsp, alors c'est dans le code de la page qu'il faut investiguer.

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Lun 22 Sep - 19:50

As-tu trouvé une solution à ton problème?

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Lun 22 Sep - 19:55

hum oui, j'ai essayé plusieurs fois de poster un message mais a chaques fois cela n'a pas marché : le contenu du message est vide comme dans mon dernier post.
Sinon on a la version 10.8.1 et on utilise entre autres Product Central qui gère les Product Line. J'ai donc modifié le JSP de création de Product Line et cela marche bien comme je veux Smile Merci !

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Mar 23 Sep - 17:46

hum en fait il y a quelaues chose que je ne comprend pas.
J'ai modifié le JSP emxProductCentralProductLineCreateDialog.jsp afin d'y ajouter le champs "Project".

Les données du formulaire sont envoyées a emxProductCentralProductLineUtil.jsp pour créer le Product Line.

Dans emxProductCentralProductLineUtil.jsp, tout le contenu de la form est récupéré et mis dans un FormBean grace a :
formBean.processForm(session,request);

Le Product Line est ensuite créé a partir de ce FormBean :
strNewObjId = productlineBean.create(context,formBean);

Neanmoins la méthode ProductLineBean.create ne prend apparement pas en compte le champs txtProductLineProject que j'ai créé (je vois dailleurs pas comment elle pourrait faire sachant que je n'ai mappé nul part ce champs txtProductLineProject avec l'attribut Project). Enfin du coup je pense qu'il faut que j'indique ce mapping quelques part mais je n'ai aucune idée d'ou.

Tu vois ce que je veux dire ?

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Mar 23 Sep - 22:52

Je vois ce que tu veux dire mais je vais manquer d'informations.

En effet, je n'ai pas l'application "Product Central" d'installée sur mes plate-formes et, même si je suis bien ton raisonnement, j'ai du mal à visualiser le code...

Par contre, ça me paraît quand même beaucoup pour l'ajout d'un attribut. Nous avons du laisser passer un point important dans notre réflexion.

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Mer 24 Sep - 22:14

Ouais c'est vrai que ça parait bizare. Je vais contacter demain notre distributeur (IMAG) pour leurs demander.
Je posterai la réponse ici.

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Dim 5 Oct - 21:10

As-tu eu des nouvelles sur ce point là?

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Lun 6 Oct - 13:54

Non je n'ai malheuresement eu aucune réponse d'IMAG ... Je vais poster ma question sur https://thelink.matrixone.com, on verra bien.

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  pupaza le Mar 7 Oct - 0:16

Avez-vous penser à utiliser une webform de creation d'objet?

En gros: on crée une commande et on utilise dans HREF:
- avant 10.8: emxForm.jsp
- a partir de 10.8: emxCreate.jsp (cette jsp est très souple pour la parametrisation)

Recherchez des exemples avec le mot clé "emxForm.jsp" dans un export admin des commandes:
Code:
export admin command * into file c:\temp\commands.exp;

Bonne chance

pupaza
Novice
Novice

Nombre de messages : 22
Age : 47
Localisation : Suresnes
Date d'inscription : 26/09/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Jeu 16 Oct - 16:27

Je suis désolé de ne pas avoir répondu avant.
C'est en effet peut etre la solution. Je pensais reprendre le JSP existant (en siot je ne veux qu'ajouter un attribut !) mais du coup je vais voir.
Merci pour ton aide. La commande export m'est en effet tres utile !

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Jeu 16 Oct - 20:30

La solution de pupaza peut ressembler à de l'artillerie lourde pour ton besoin, mais le point positif des webforms est que tu contrôle exactement ce qui est affiché.
De plus en couplant cela avec les portal et channel, tu pourras avoir des onglets, limiter l'accès à certains attributs pour des rôles (ou groupes) -sans avoir à les définir sur l'attribut-.

Mon avis, sur ton problème serait le suivant :
Si tu veux avancer, soit tu modifies la page, soit tu passes au webform.
Mais quoique tu fasses, il faut loguer un incident thelink, pour comprendre pourquoi tu n'arrives pas à afficher un bête attribut dans la page "standard".

Mets nous la référence de l'incident lorsque tu l'auras créer, on pourra voir la réponse comme cela.

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Dim 19 Oct - 12:58

J'avais posté mon probleme sur thelink, j'ai eu une réponse vendredi :
https://thelink.matrixone.com/custlink/cust_forum.jsp?a=detail&d=17542.28027.36499.1981&f=17542.28027.43858.44528

Par contre j'ai une question plus générale :
On souhaite avoir un type qui soit identique au Product Line mais avec un attribut en plus (il y a en réalité plusieurs autres types auquel on veut rajouter cet attribut). Ayant l'habitude de la programmation objet j'étais tenté de vouloir créer un nouveau type héritant de Product Line, auquel on ajouterai l'attribut voulu. Mais malheuresement l'héritage est assez limité et il n'est pas possible de faire des webforms héritant d'autres webforms etc. Du coup au final si je créé un nouveau type fils, il faut que je clone/copie un grand nombre de JSPs/Webforms/Menus/Commands .. Donc je me dis qu'il est peut etre mieux de modifier directement les types OOTB (i.e: Product Line, etc). Néanmoins modifier les types de base ne me parait pas non plus etre une tres bonne idée et peut etre source de problemes lors de mises a jour j'imagine. J'aimerai alors savoir quel est la solution que vous choisiriez : modifier les types de base ou créer de nouveaux types héritants des types de base ?

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Dim 19 Oct - 23:51

Pour une fois, je suis en phase avec Matrix.
D'abord, je comprends mieux ton problème et je vois pourquoi on n'arrivait pas à t'aider.
Ensuite, parce que la création du custom filter doit être la base de toutes les modifications que tu feras dans les pages JSP.

Ma préférence va à l'héritage des types de base justement parce qu'il hérite des attributs, des relations et de tous les modèles.
Tu conserves donc pas mal d'éléments et tu n'es pas obligé de tout recopier/cloner, au contraire de la création d'un modèle de toute pièce.

De plus modifier des éléments de base JSP, JPO, TCL, modèle de données (hors properties), c'est se créer pas mal de problème lors de migration de versions.

Il vaut mieux :
  • Utiliser les objets de base,
  • Faire hériter ses types du standard,
  • Utiliser les JPO *base tant que c'est possible, ils existent pour pouvoir faire du spécifique par héritage et surcharge de méthode,
  • Copier les pages JSP standards dans le répertoire custom filter afin de pouvoir les modifier sans risque,
  • Créer les pages JSP spécifique dans le répertoire custom filter


Il n'y a de règle arbitraire, dès fois la solution choisie dépend du contexte, par exemple pour les intégrations, il est beaucoup plus simple de modifier les JPO standards (ce n'est pas vrai pour les JSP car le répertoire custom filter marche très bien).


Dernière édition par rudbg le Dim 19 Oct - 23:57, édité 1 fois (Raison : Ajout d'un commentaire suite à la lecture de l'incident thelink)

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  pupaza le Mar 21 Oct - 22:57

Je pense que je me répète, mais ...

au lieu de changer des pages JSP, il vaut mieux utiliser les webforms, même si cela pourrait paraître "compliqué" au début et "coûteux" en terme de temps développement (mais cela n'est vrai que pour un attribut sur un seul type, et encore...). On gagne dès que on doit y revenir pour des modifications répétitives. De plus il faut pas oublier le temps perdu de la/des livraison/s.

Qui dit webform dit aussi "Reusable" Component. MatrixOne préconise d'utiliser ces Components reutilisables le + possible.

pupaza
Novice
Novice

Nombre de messages : 22
Age : 47
Localisation : Suresnes
Date d'inscription : 26/09/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Jeu 23 Oct - 13:00

Il vaut mieux :

* Utiliser les objets de base,
* Faire hériter ses types du standard,
Malheuresement cela ne semble pas marcher avec Product Central, Tomcat crash et j'obtiens une stack overflow error (Voir l'issue que j'ai postée ci-dessous).

Enfin finalement j'ai trouvé un moyen pour faire ce que l'on voulait faire sans cet attribut. J'ai donc uniquement besoin de remommer le type de base ainsi que son nom dans les propriétés. Cela ne devrait apparement pas poser de problemes lors des mises a jour.

Voici mon issue report (qui n'est pas posté sur thelink, mais sur notre serveur, avec des personnes d'IMAG assignés a l'erreur):

Description:
I created a subtype of Model called "Mission System-Component" and then created an object of this type.

Yet when I try to display it, Tomcat crashes with a "stack overflow" error.

I finally found that the problem comes from emxPRCCommonBase.getStructureListForType which is called to get the hierarchy of the objects underneath my "Mission System-Component" object.

Actually, emxPRCCommonBase.getStructureListForType calls emxPRCCommonBase.getJPOForType(context, objectType) with objectType set to "Mission System-Component". Because there is no associated JPO, it calls getJPOForType(context, objectParentType), with objectParentType set to "Model", and get the name of the JPO "emxModel" (wich is good).

It then calls JPO.invoke(context, "emxModel" , null, "getStructureList", args, Maplist.class), where args is the unchanged parameter that emxPRCCommonBase.getStructureListForType received.

The method emxModel.getStructureList gets the objectId from args:

HashMap programMap = (HashMap) JPO.unpackArgs(args);
HashMap paramMap = (HashMap)programMap.get("paramMap");
String objectId = (String)paramMap.get("objectId");

and the type of the object (which is still "Mission System-Component"):

DomainObject modelObj = DomainObject.newInstance(context, objectId);
String objectType = modelObj.getInfo(context, DomainConstants.SELECT_TYPE);

it then compares the object type found with ProductCentralDomainConstants.TYPE_MODEL and fails because ProductCentralDomainConstants.TYPE_MODEL equals "Model" and objectType equals "Mission System-Component". So the else block is executed and emxPRCCommonBase.getStructureListForType is called again, with the exact same parameters:

if(objectType != null && objectType.equals(ProductCentralDomainConstants.TYPE_MODEL))
{
...
}
else
{
modelStructList = (MapList) ${CLASS:emxPRCCommon}.getStructureListForType(context, args);
}

So emxPRCCommonBase.getStructureListForType calls emxModel.getStructureList which calls emxPRCCommonBase.getStructureListForType, which calls emxModel.getStructureList, etc .. until the stack is full and Tomcat crashes.

Thus it seems impossible to create and use a subtype of a Model.

Am I wrong somewhere or is there really a problem in the code?

If you agree, could you please report it to ENOVIA?

Steps to Reproduce:
Just create a subtype of Model and create an object of that new type under a Product Line. In the thin client, display the parent Product Line and click on the expand button of the new "Mission System-Component" object.

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  rudbg le Lun 27 Oct - 20:39

Voici une réponse proposée par jayjay :

Pour le post de François birot sur la mise à jour d'attribut la réponse dans la JSP emxProductlineUtil est:


Code:
strNewObjId = productlineBean.create(context,formBean);
String strNewAttributeValues = (String)formBean.getElementValue("txtNewAttributeValues");

      String strAttributeNewAttributeValues = PropertyUtil.getSchemaProperty( context, "attribute_NewAttributeValues" );
     
      if (strNewAttributeValues != null && ! strNewAttributeValues .equals("")) {
      productlineBean.setId(strNewObjId);     
      productlineBean.setAttributeValue(context, strAttributeNewAttributeValues , strNewAttributeValues );
      }

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Lun 27 Oct - 20:54

Merci Smile

Sinon le probleme de stack overflow, c'est bien un bug de Product Central.

Un patch possible est d'utiliser la methode isKindOf au lieu de comparer le nom des types, dans emxProductBase, emxProductLineBase, emxModelBase, etc (et tous les autres types de Product Central qui ont le probleme).

Il faut donc par exemple remplacer :

Code:
if(objectType != null && objectType.equals(ProductCentralDomainConstants.TYPE_MODEL))

par

Code:
if(objectType != null && modelObj.isKindOf(context, ProductCentralDomainConstants.TYPE_MODEL))

Il peut etre par contre preferable de ne pas modifier les emx*Base mais plutot de redefinir la methode getStructureList dans les sous types. Donc par exemple copier emxProductBase.getStructureList dans emxProduct et faire la modification dans emxProduct.getStructureList

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  mradi le Mar 28 Oct - 0:33

Francois Birot a écrit:
if(objectType != null && modelObj.isKindOf(context, ProductCentralDomainConstants.TYPE_MODEL))

Il faut faire attention quand on utilise la fonction isKindOf ca risque d'impacter les performances dans certains cas.

mradi
Novice
Novice

Nombre de messages : 18
Date d'inscription : 12/12/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Francois Birot le Mar 28 Oct - 12:41

oui c'est vrai, mais la ca ne devrait pas causer de problemes puisque la methode getStructureList est il me semble appelée uniquement lorsqu'on expand un objet. Du coup ca devrait pas trop jouer sur les performances

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Modifier un formulaire de création d'objet

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum