Fonctionnalités supplémentaires de Windchill > Gestion des processus de fabrication > Personnalisation de l'Explorateur de gammes
  
Personnalisation de l'Explorateur de gammes
Les gammes sont la description détaillée des opérations à effectuer en atelier pour produire, inspecter, réparer ou gérer un article ou un assemblage donné. Elles contiennent les opérations à exécuter, l'ordre dans lequel elles doivent l'être, les ressources physiques, les usines et les qualifications requises, les références de document, la description sous forme de texte, ainsi que les contraintes de temps et de coût.
Les gammes Windchill MPMLink vous permettent de définir les éléments suivants :
les opérations nécessaires pour assurer la fabrication d'un produit ;
les séquences selon lesquelles ces opérations s'enchaînent ;
le temps, les coûts et les contraintes liées à chaque opération ;
les ressources physiques et les qualifications requises pour effectuer ces opérations ;
les articles nécessaires pour fabriquer le produit, ainsi que le lieu de leur utilisation et la manière dont ils sont utilisés dans le processus de fabrication.
Dans Windchill MPMLink, les gammes permettent également de créer des Instructions de travail pour atelier. Les instructions de travail décrivent étape par étape la production, l'inspection, la réparation ou la maintenance des articles. Les instructions de travail sont des documents HTML générés de façon dynamique qui combinent des informations de gamme (séquences, opérations, allocation des articles, allocation des ressources, temps, etc.) et tous les documents associés tels que les dessins, images et sessions 3D avec des annotations.
Création de formules personnalisées
Un jeu de formules permet d'associer un ensemble d'attributs aux formules ou équations correspondantes qui doivent être utilisées pour calculer leur valeur. Un jeu de formules comporte les éléments suivants :
FormulaSet identifie le jeu ;
FormulaMetaData définit le nom et la description d'une formule Java ;
FormulaValuatedLink associe un nom d'attribut à une définition de formule.
Le graphique ci-après présente un exemple des données à créer pour ajouter des formules personnalisées :
L'onglet Jeux de formules permet de sélectionner des jeux de formules prédéfinis pouvant servir à calculer le temps et le coût associés à une opération. Il peut s'agir, par exemple, d'un jeu de formules de temps et coût standard et d'un jeu de formules de temps et coût périodiques, par exemple. Ces jeux de formules tiennent compte du nombre d'articles à produire dans le cadre de l'opération et se basent sur les spécifications définies pour le poste de charge (par exemple, temps de préparation, temps d'attente). Les formules et les jeux de formules s'appliquent dès l'instant où vous sélectionnez l'action Calculer le temps et le coût et lorsque vous chargez des gammes et des opérations dans l'Explorateur Gantt de fabrication.
Si plusieurs jeux de formules peuvent être associés à un poste de charge, un seul jeu peut être désigné comme jeu de formules par défaut pour le poste de charge. C'est ce jeu de formules qui est affecté à une opération lorsque le poste de charge est alloué à cette dernière.
* 
Les formules doivent être affectées à un jeu de formules. Si vous ne disposez pas d'un jeu de formules existant, vous devez en définir un avant de définir une formule personnalisée. L'Explorateur de structures produit peut être personnalisé pour vous permettre d'ajouter des valeurs supplémentaires à vos jeux de formules personnalisés. Pour plus d'informations, consultez la documentation de l'Explorateur de structures produit.
Pour créer une formule personnalisée, procédez comme suit :
1. A l'aide de l'utilitaire LoadFromFile, chargez un fichier de chargement XML où <csvname> est propre au système. Ce fichier de chargement doit contenir tous les éléments suivants :
csvFormulaSet : cet élément crée un objet FormulaSet.
csvFormulaMetaData : cet élément crée un objet FormulaMetaData.
csvAddFormulaMetaData : cet élément associe l'objet FormulaMetaData à l'objet FormulaSet.
<csvFormulaSet handler="com.ptc.windchill.mpml.formula.LoadFormula.
createFormulaSet">
<csvuser></csvuser>
<csvname>Standard Time and Cost</csvname>
<csvdescription>This formula Set is used to calculate the time and
cost of an Operation</csvdescription>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
</csvFormulaSet>
2. Créez des métadonnées de formule en créant un lien vers un nom de classe Java implémentant l'interface de formule et renvoyant une valeur calculée. Par exemple, FloatingPointWithUnits.
A l'aide de l'utilitaire LoadFromFile, chargez un fichier de chargement XML où <csvname> est propre au système et où <csvformulaClassName> est la classe Java implémentant l'interface de formule.
<csvFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.createFormulaMetaData">
<csvuser></csvuser>
<csvname>StandardAttributeValueFormulaTime</csvname>
<csvdescription>Standard Attribute Value Formula</csvdescription>
<csvtype>time</csvtype>
<csvformulaClassName>com.ptc.windchill.mpml.formula.Standard AttributeValueFormula</csvformulaClassName>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
<csvorganizationID></csvorganizationID>
</csvFormulaMetaData>
3. Associez les métadonnées de formule au jeu de formules au moyen d'un nom d'attribut.
Par exemple, lors de l'appel du service permettant de calculer la formule, toutes les métadonnées de formule associées au jeu de formules seront exécutées et le système renverra un plan de toutes les valeurs calculées en utilisant le nom d'attribut en tant que clé.
A l'aide de l'utilitaire LoadFromFile, chargez un fichier de chargement XML où <csvattributeName> est l'attribut réutilisable de temps et de coût sur l'objet MPMOperation.
<csvAddFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.addFormulaMetaDataToFormulaSet" >
<csvformulaSetName>Standard Time and Cost</csvformulaSetName>
<csvformulaMetaDataName>StandardAttributeValueFormula Time</csvformulaMetaDataName>
<csvattributeName>IBA|MPM_Attr_MPMOperationSetupTime </csvattributeName>
</csvAddFormulaMetaData>
Lors de la création d'une classe Java qui implémente l'interface de formule, les entrées ci-après sont accessibles par défaut dans le plan d'entrées.
FormulaHelper.FORMULAVALUATED : objet sur lequel le jeu de formules est lié et pointant vers FormulaValuated.
FormulatHelper.FORMULAVALUATED_TI : instance de type d'objet sur laquelle le jeu de formules est lié et pointant vers TypeInstance. Cet élément peut présenter la valeur "null".
FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME : nom d'attribut utilisé pour associer les métadonnées de formule au jeu de formules et pointant vers String. Cette valeur sera utilisée en tant que clé dans le plan de résultats.
FormulaHelper.LOT : valeur de lot spécifiée par l'utilisateur dans le contexte de l'action Calculer le temps et le coût. Cette valeur pointe vers Double.
Voici un exemple de classe Java de formule :
import com.ptc.core.meta.common.AttributeIdentifier;
import com.ptc.core.meta.common.AttributeTypeIdentifier;
import com.ptc.core.meta.common.TypeinstanceIdentifier;
import com.ptc.core.meta.context.common.AttributecontextSpec
import com.ptc.core.meta.server.TypeIdentifierUtility;
import com.ptc.core.meta.type.common.TypeInstance;
import com.ptc.core.meta.type.common.TypeInstanceFactory;
import com.ptc.windchill.mpml.MPMLinkHelper;
import java.text.NumberFormat;
import java.util.HashMap;
import wt.units.FloatingPointWithUnits;
import wt.util.WTContext;
import util.WTException;
public class StandardAttributeValueFormula implements Formula{
private static final String RESOURCE = "com.ptc.windchill.mpml.formula.formulaResource";
private static NumberFormat numberFormat =
NumberFormat.getInstance(WTContext.getContext().getLocale());
/** Creates a new instance of StandardAttributeValueFormula */
* This Formula simply return the value of the attribute.
public StandardAttributeValueFormula() {
}
public FloatingPointWithUnits calculate(HashMap inputs)throws
InvalidFormulaInputException, WTException{
//Get the object on which the formula is call
Object object = inputs.get(FormulaHelper.FORMULAVALUATED);
//Get the TI on which the formula is call
TypeInstance ti =(TypeInstance)inputs.get(FormulaHelper.FORMULAVALUATED_TI);
//Get the attribute that is calculated by the formula
String attribute_name = (String)inputs.get(FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME);
if(object == null)
throw new InvalidFormulaInputException( RESOURCE, formulaResource.REQUIRED_FORMULA_INPUT_MISSING, new Object[]{FormulaHelper.FORMULAVALUATED} );;
TypeInstanceIdentifier tii = null;

//Get the TI of the object if null
if(ti==null){
tii = TypeIdentifierUtility.getTypeInstanceIdentifier(object);
ti = TypeInstanceFactory.newTypeInstance(tii);
}else
tii = (TypeInstanceIdentifier)ti.getIdentifier();
//Get ATI for the attribute to calculate
AttributeTypeIdentifier ati = (AttributeTypeIdentifier)MPMLinkHelper.getIdentifierFactory().get(attribute_name,tii.getDefinitionIdentifier());
AttributeIdentifier[] ais = ti.getAttributeIdentifiers(ati);
//If the attribute value is not in the TI, update it to get the value
if(ais.length<1){
AttributecontextSpec fl = new AttributecontextSpec();
fl.putEntry(ati);
ti = MPMLinkHelper.updateTypeInstance(new TypeInstance[] {ti}, fl, null)[0];
ais = ti.getAttributeIdentifiers(ati);
}
//Get the attribute value
Object value = null;
if(ais.length>0)
value = ti.get(ais[0]);
//Return the value of the attribute if it’s a FloatingPointWithUnits
if(value instanceof FloatingPointWithUnits)
return (FloatingPointWithUnits)value;
// value is null
return FloatingPointWithUnits.valueOf(numberFormat.format(0));
}
}
* 
Il est également possible d'ajouter d'autres entrées à la formule en créant une action, puis en utilisant les services de formule pour appeler l'exécution du jeu de formules. Pour plus d'informations sur la création d'actions, consultez la documentation de l'Explorateur de structures produit.
Activation de la formule de temps et de coût périodique
Pour activer la formule de temps et de coût périodique, procédez comme suit :
1. Lancez l'utilitaire Gestion d'attributs et de types.
2. Dans la fenêtre Gérer les attributs réutilisables, sélectionnez le classeur Resource_Attribute_Org.
3. Insérez un nouvel attribut avec les propriétés suivantes :
Nom : MPM_Attr_SetupLotInterval
Type de données : Nombre réel
Nom interne : MPM_Attr_SetupLotInterval
Description : Nom affiché et Nom affiché dans une hiérarchie : Intervalle de lot de préparation
4. Insérez un nouvel attribut avec les propriétés suivantes :
Nom : MPM_Attr_SetupTimeDuringProcessing
Type de données : Nombre réel
Nom interne : MPM_Attr_SetupTimeDuringProcessing
Description : Nom affiché et Nom affiché dans une hiérarchie : Intervalle de lot de préparation
5. Insérez un nouvel attribut avec les propriétés suivantes :
Nom : MPM_Attr_SetupCostDuringProcessing
Type de données : Nombre réel
Nom interne : MPM_Attr_SetupCostDuringProcessing
Description : Nom affiché et Nom affiché dans une hiérarchie : Coût de préparation lors de l'exécution
6. Dans la fenêtre Gérer les types, modifiez le type de poste de charge situé sous Article maître > Ressource > Opération affectable.
7. Sous l'onglet Modèle, sélectionnez Racine d'attribut, cliquez sur Ajouter un attribut, puis associez les trois attributs créés précédemment au type de poste de charge.
8. Lancez l'Explorateur des ressources de fabrication.
9. Pour chaque poste de charge existant, récupérez le poste de charge et définissez une valeur sous l'onglet Informations pour les attributs Intervalle de lot de préparation, Temps de préparation lors de l'exécution et Coût de préparation lors de l'exécution. Lorsque tous les attributs sont définis, intégrez le poste de charge.
Modification des unités de mesure de la fonction de temps et de coût cumulés
La fonction de temps et coût cumulés de l'Explorateur de gammes n'utilise pas les unités par défaut du système de mesures.
Pour changer les unités de l'agrégation des temps et des coûts, vous devez modifier les propriétés suivantes :
com.ptc.windchill.mpml.CumulatedTimeAndCostActionTimeUnit
com.ptc.windchill.mpml.CumulatedTimeAndCostActionCostUnit
Ces propriétés peuvent être situées à l'emplacement suivant :
codebase/com/ptc/windchill/mpml/xconf/mpmlin.properties.xconf
Les valeurs par défaut respectives sont "min" et "€".
Personnalisation des instructions de travail
Le modèle d'instructions de travail installé avec Windchill MPMLink peut être personnalisé selon vos besoins. Pour personnaliser les instructions de travail, vous devez disposer d'une connaissance de base de la technologie JSP (Java Server Pages) et d'Info*Engine.
Les tâches Info*Engine permettent de rassembler les informations à afficher dans l'instruction de travail, tandis que les pages JSP sont utilisées pour organiser et formater l'affichage de ces informations :
Location
Description
<WT_Home>\codebase\netmarkets\jsp\mpml
Emplacement des pages JSP utilisées dans les instructions de travail.
<WT_Home>\tasks\com\ptc\windchill\mpml\workinstructions
Emplacement des tâches Info*Engine utilisées pour collecter les données d'instruction de travail.
<WT_Home>\codebase\com\ptc\windchill\mpml\xconfs\mpmlink.properties.xconf
Emplacement des propriétés d'instruction de travail.
<WT_Home>\codebase\netmarkets/css/workInstructionStyles.css
Emplacement de la feuille de style d'instruction de travail. Ce fichier permet de modifier les polices utilisées dans les instructions de travail, ainsi que la couleur des titres de rapport.
Pages JSP utilisées dans les instructions de travail
Le tableau ci-après répertorie et décrit les pages JSP permettant de configurer des instructions de travail.
JSP
Description
headerWorkInstruction.jsp
Crée l'image de logo affichée dans le coin supérieur du rapport d'instructions de travail. En regard du logo, cette page JSP crée un tableau affichant les informations concernant la gamme relative aux opérations présentées dans le rapport. A l'extrême droite, cette page JSP crée les informations de tableau d'assemblage pour lesquelles cette gamme a été associée.
configSpecWorkInstruction.jsp
Crée le tableau de contexte de configuration utilisé dans le rapport d'instructions de travail. Trois types de contextes de configuration sont valides pour ce rapport : standard, configuration de référence et effectivité. Les valeurs affichées sont celles relatives aux critères de développement qui ont été appliqués aux données lors du lancement du rapport d'instructions de travail.
operationHeaderWorkInstruction.jsp
Affiche les informations créées dans sequenceHeaderWorkInstruction.jsp dans la marge gauche. Crée le numéro de libellé de l'opération ou de la sous-opération et le place en regard du numéro de séquence. Sous le numéro de libellé, cette page JSP crée un tableau affichant le nom, le numéro, la version et une courte description de cette opération.
operationDetailHeaderWorkInstruction.jsp
Crée le tableau sous l'en-tête des opérations. Cette page JSP affiche les détails de l'opération, notamment les postes de charge utilisés, les temps et les coûts.
operationDetailWI.jsp
Crée les tableaux affichant la description détaillée de l'opération, les articles qui lui sont associés, les ressources qui lui sont allouées et les documents associés. Si la colonne Affiché du tableau de documents présente la valeur Oui, le document associé est une image reconnue à afficher dans le panneau d'instructions de travail situé à gauche de ces tableaux de détails. Les fichiers images qui peuvent être affichés dans les instructions de travail doivent présenter une extension spécifiée par la propriété suivante :
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
sequenceHeaderWorkInstruction.jsp
Lorsque les opérations font partie d'une séquence, cette page JSP crée des liens vers les opérations de branchement et de retour. Si l'opération est une sous-opération d'une autre opération, cette page JSP crée des liens vers l'opération parente.
footerWorkInstruction.jsp
Crée la zone de pied de page affichée à la fin de chaque section d'opération. Cette page JSP affiche l'état actuel de l'opération, son statut, son inspection, sa date de création initiale, l'auteur de sa dernière mise à jour, ainsi que la date et l'heure de sa dernière mise à jour.
coreWorkInstruction.jsp
Page JSP centrale construisant le rapport d'instructions de travail. Traite les paramètres d'URL et appelle les tâches Info*Engine utilisées pour rassembler les données associées aux opérations figurant dans une gamme. Si cette page JSP est lancée à partir d'une gamme, elle appelle
processPlanLogicWorkInstruction.jsp
Si cette page est lancée à partir d'une opération, elle appelle
operationLogicWorkInstruction.jsp
Cette page JSP calcule également la relation parent-enfant entre les opérations, ainsi que les opérations de branchement et de retour de la séquence. Pour chaque opération, elle appelle les pages JSP qui créent les tableaux et affiche les données renvoyées par les tâches Info*Engine.
operationLogicWorkInstruction.jsp
Info*EngineInfo*Engine
Lance les tâches Info*Engine qui recherchent toutes les opérations et procédures standard sous une opération. Les opérations sont triées par leur numéro de libellé. Cette page JSP n'affiche pas les éléments dans le rapport.
processPlanLogicWorkInstruction.jsp
Lance les tâches Info*Engine qui recherchent toutes les opérations, séquences et procédures standard sous une opération. Les opérations trouvées sont triées par leur numéro de libellé. Cette page JSP n'affiche pas les éléments dans le rapport.
Tâches Info*Engine utilisées dans les instructions de travail
Le tableau ci-après répertorie et décrit les tâches Info*Engine permettant de rassembler les données utilisées dans les instructions de travail.
Tâche Info*Engine
Description
describeAttributes.xml
Chaque webject figurant dans cette tâche crée un groupe dans lequel les valeurs des attributs sont localisées. Ces valeurs localisées sont ensuite affichées dans le rapport d'instructions de travail.
getOperationData.xml
Les webjects figurant dans cette tâche interrogent une opération concernant les données affichées dans le rapport d'instructions de travail. Les ensembles de données collectés sont les suivants : poste de charge, processus, articles, capacités de fabrication, ressources et documents. Chaque ensemble de données est stocké dans un groupe Info*Engine.
getOperationsAndStProceduresUnderAnOperation.xml
Les webjects figurant dans cette tâche créent un groupe contenant toutes les sous-opérations et procédures standard situées juste en dessous d'une opération spécifique.
getProcessPlanAndAssemblyInformation.xml
Les webjects figurant dans cette tâche créent un groupe contenant des informations sur l'assemblage associé à la gamme.
getSequencesAndStProceduresUnderAProcessPlan.xml
Les webjects figurant dans cette tâche créent un groupe contenant toutes les séquences et procédures standard juste en dessous d'une gamme.
sortingOperations.xml
Les webjects figurant dans cette tâche créent un groupe contenant les sous-opérations et procédures standard situées sous une opération spécifique. Cette tâche trie également les opérations et procédures standard de chaque niveau. Pour le moment, l'algorithme n'est pas récursif ; sa portée maximale est de 3 niveaux. Autrement dit, il trouvera uniquement les 3 premiers niveaux de sous-opérations, puis s'arrêtera même s'il existe d'autres sous-opérations. Pour accéder aux niveaux suivants, suivez le modèle appliqué dans cette tâche et ajoutez d'autres niveaux en conséquence.
sortingSequences.xml
Les webjects figurant dans cette tâche créent un groupe contenant les sous-séquences et procédures standard situées sous une séquence spécifique. Cette tâche trie également les séquences et procédures standard de chaque niveau. Pour le moment, l'algorithme n'est pas récursif ; sa portée maximale est de 3 niveaux. Autrement dit, il trouvera uniquement les 3 premiers niveaux de sous-séquences, puis s'arrêtera même s'il existe d'autres sous-séquences. Pour accéder aux niveaux suivants, suivez le modèle appliqué dans cette tâche et ajoutez d'autres niveaux en conséquence.
Propriétés d'instruction de travail
Personnalisations d'instruction de travail
Les instructions de travail sont personnalisables pour différentes raisons, notamment pour remplacer l'en-tête et le logo par nos propres informations ou pour fournir des instructions plus simples.
Le tableau ci-après répertorie certaines personnalisations d'instruction de travail courantes.
Personnalisations
Description
Pour modifier les unités de temps d'une opération :
Modifiez la page JSP suivante :
timeUnit in coreWorkInstruction.jsp
Par exemple, pour remplacer les secondes par des minutes, définissez la valeur m.
Pour modifier les unités de temps des étapes d'une opération :
Modifiez les pages JSP ci-après en fonction des besoins :
setupTimeUnit
processingTimeUnit
LaborTimeUnit
queueTimeUnit,
teardownTimeUnit,
waitTimeUnit,
moveTimeUnit
Par exemple, pour remplacer les secondes par des minutes, définissez la valeur m.
Pour repositionner un tableau dans l'instruction de travail :
Accédez à la fin de la page JSP suivante :
coreWorkInstruction.jsp
Puis remaniez l'affichage HTML.
Pour afficher le coût d'exécution d'une opération dans une instruction de travail :
Accédez aux tâches suivantes :
getOperationsAndStProceduresUnder AnOperation.xml
sortingOperations.xml
Ajoutez l'attribut ci-après aux tâches ci-dessus :
MPM_Attr_MPMOperationProcessingCost
Puis créez la colonne et les données d'affichage dans la page JSP suivante :
operationDetailHeaderWorkInstruction
.jsp
Pour modifier la police, la taille ou la couleur des titres dans une instruction de travail :
Modifiez le fichier CSS ci-après et les pages JSP qui utilisent la définition dans le fichier CSS :
workInstructionStyles.css
Pour modifier le logo situé dans la partie supérieure de l'instruction de travail ou dans le tableau d'opération :
Utilisez la procédure suivante :
xconfmanager -d
com.ptc.windchill.mpml.WorkInstructionLogo=<logo> -t
codebase/wt.properties
où <logo> est le chemin d'accès complet au fichier .gif de logo situé dans le dossier suivant :
codebase\netmarkets\jsp\mpml
La valeur par défaut est : ../../images/ptcLogo_workInstructions.gif correspondant au dossier codebase\netmarkets\images
Pour ajouter un type d'extension d'image :
Ajoutez le type d'extension à la propriété ci-après :
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
Pour réorganiser, supprimer ou ajouter de nouveaux tableaux :
Modifiez la page JSP suivante :
coreWorkInstructions.jsp
Modification de la numérotation des opérations
Windchill MPMLink numérote les opérations par incréments séquentiels de 10. Par exemple, opération 10, opération 20, etc. Toutefois, vous pouvez configurer vos opérations pour que leur numéro soit automatiquement incrémenté en fonction d'un schéma de numérotation différent.
Pour changer les schémas de numérotation, vous pouvez modifier les propriétés suivantes :
wt.operationLabelIncrement
wt.operationLabelNumberOfCharacters
Par exemple, pour configurer des libellés d'opération comportant trois caractères et incrémentés de 5 (005, 010), insérez les chaînes ci-après dans site.xconf, puis exécutez xconfmanager -pF :
<Property name="wt.operationLabelIncrement" overridable="true" targetFile="codebase/wt.properties" value="5"/>
<Property name="wt.operationLabelNumberOfCharacters" overridable="true" targetFile="codebase/wt.properties" value="3"/>
En outre, pour modifier le remplissage utilisé par une opération (par exemple, pour le remplacer par une valeur autre que 0), modifiez la propriété suivante :
wt.operationLabelPaddingCharacter