Ajout de propriétés personnalisées et de formes de données
Ajout de propriétés personnalisées et de formes de données
Le modèle de données Operator Advisor peut être étendu pour ajouter des données métier au modèle qui n'est pas fourni en standard. Pour cela, il est possible de procéder des façons suivantes :
Ajout de propriétés personnalisées aux entités Operator Advisor existantes en mettant à jour la forme de données _AP associée à l'entité Operator Advisor.
Ajout de nouvelles entités à Operator Advisor en créant des formes de données personnalisées et des services pour les gérer.
Ajout de propriétés personnalisées aux formes de données _AP
La plupart des entités du modèle de données Operator Advisor sont associées à une forme de données _AP pour permettre l'ajout de propriétés personnalisées. Par exemple, la forme de données de l'ordre de travail (PTC.SCA.SCO.JobOrder) est associée à une forme de données PTC.SCA.SCO.JobOrder_AP.
Utilisez la procédure suivante pour ajouter une propriété personnalisée à une entité Operator Advisor. L'exemple ajoute une nouvelle propriété Location à la forme de données PTC.SCA.SCO.JobOrder_AP.
1. Dans ThingWorx Composer, accédez à la forme de données _AP pour l'entité. Pour cet exemple, accédez à PTC.SCA.SCO.JobOrder_AP.
2. Sous Définitions de champ, cliquez sur Ajouter.
3. Dans le volet Nouvelle définition de champ, spécifiez les éléments suivants :
Nom : nom de la propriété. Dans cet exemple, entrez Location.
Type de base : type de données de la propriété. Dans cet exemple, sélectionnez STRING.
4. Cliquez sur pour ajouter la nouvelle définition de champ.
5. Cliquez sur Enregistrer pour enregistrer les mises à jour apportées à la forme de données.
6. Accédez à l'objet de base de données configuré pour votre système, par exemple PTC.SCA.SCO.PostgresDatabase.
7. Sous Services, exécutez le service AddColumn avec les entrées suivantes :
Pour dataShapeName, recherchez et sélectionnez la forme de données _AP à laquelle vous avez ajouté la nouvelle définition de champ. Dans cet exemple, recherchez et sélectionnez PTC.SCA.SCO.JobOrder_AP.
Pour fieldName, entrez le nom de la nouvelle définition de champ. Dans cet exemple, entrez Location.
Pour dbInfo, entrez les informations de la base de données pour la nouvelle colonne :
name : nom de la colonne ajoutée à la base de données pour la nouvelle propriété. Obligatoire
length : longueur de la nouvelle colonne, si elle est différente de la longueur de colonne par défaut de la base de données.
unique : permet de spécifier si la colonne doit avoir une valeur unique.
notNull : permet de spécifier si la colonne ne doit pas être nulle.
Pour cet exemple, entrez les éléments suivants :
{"name":"Location","length":4000}
Le code suivant est un exemple de la façon dont la propriété personnalisée peut être incluse dans un service pour remplir automatiquement l'attribut. Ce code utilise le service CreateInfoTable pour fusionner les formes de données PTC.SCA.SCO.JobOrder et PTC.SCA.SCO.JobOrder_AP dans une table d'informations unique et renseigne le nouvel attribut Location avec la valeur de Montreal.
var jobOrderDataShapeName = "PTC.SCA.SCO.JobOrder";
var productionManagerThingName = Things["PTC.Factory.LaunchPointConfigurationThing"].GetProductionOrderManagerThingName();
var jobOrders = Things[productionManagerThingName ].CreateInfoTable({
dataShapeName: jobOrderDataShapeName
});
var jobOrder = {};
jobOrder.ID = "" + 121;
jobOrder.WorkType = 1;
jobOrder.Description = "test";
jobOrder.Location = "Montreal";
jobOrders.AddRow(jobOrder);

var newJobOrders = Things[productionManagerThingName ].CreateJobOrders({
JobOrders: jobOrders
});
Inclusion de propriétés personnalisées dans une application composite
Les étapes suivantes présentent une bonne pratique pour utiliser des propriétés d'inclusion dans une application composite.
1. Ajoutez une propriété personnalisée à la forme de données _AP, puis exécutez le service AddColumn, comme décrit dans la section précédente. Dans cet exemple, nous poursuivons avec la propriété personnalisée Location ajoutée à la forme de données PTC.SCA.SCO.JobOrder_AP dans la section précédente.
2. Créez une nouvelle forme de données avec des définitions de champ provenant de la forme de données d'entité principale et de la forme de données _AP.
Pour cet exemple, créez une nouvelle forme de données nommée MyJobOrder. Ajoutez des définitions de champ pour ID (à partir de la forme de données PTC.SCA.SCO.JobOrder) et Location (à partir de la forme de données PTC.SCA.SCO.JobOrder_AP).
3. Accédez à l'objet PTC.SCA.SCO.ProductionOrderUtils.
4. Sous Services, ajoutez un nouveau service pour créer des instances de la forme de données créée à l'étape 2. Pour les paramètres d'entrée et de sortie, utilisez une table d'informations de la nouvelle forme de données.
Pour cet exemple, ajoutez un nouveau service nommé CreateMyJobOrder, avec une table d'informations de la forme de données MyJobOrder pour les paramètres d'entrée et de sortie. Dans l'éditeur de service, entrez du code semblable à ce qui suit :
var productionManagerThingName = Things["PTC.Factory.LaunchPointConfigurationThing"].GetProductionOrderManagerThingName();
var newJobOrders = Things[productionManagerThingName].CreateJobOrders({
JobOrders: myJobOrders
});
//Put new job orders in a new info table of MyJobOrder in order to filter the return attribute, this is not required.
var params = {
infoTableName : "InfoTable",
dataShapeName : "MyJobOrder"
};
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var tableLength = newJobOrders.rows.length;
for (var x=0; x < tableLength; x++) {
var row = newJobOrders.rows[x];
result.AddRow(row);
}
5. L'utilisation du nouveau service dans une application composite entraîne la création de nouvelles instances de l'entité dans lesquelles la propriété personnalisée est présente. Dans cet exemple, l'utilisation du service CreateMyJobOrder dans une application composite entraîne la création de nouveaux ordres de travail avec la propriété ID renseignée dans la table de base de données PTC.SCA.SCO.JobOrder et la propriété personnalisée Location renseignée dans la table de base de données PTC.SCA.SCO.JobOrder_AP.
Ajout de formes de données personnalisées
Pour ajouter de nouvelles entités à Operator Advisor, créez une nouvelle forme de données pour l'entité avec les services nécessaires à la gestion des instances de la forme de données.
1. Dans ThingWorx Composer, créez une nouvelle forme de données. Dans cet exemple, nommez la forme de données MyObject.
2. Sous Définitions de champ, cliquez sur Ajouter et spécifiez de nouvelles définitions de champ pour chaque propriété à inclure dans la forme de données.
3. Cliquez sur Enregistrer pour enregistrer la nouvelle forme de données.
4. Accédez à l'objet de base de données configuré pour votre système, par exemple PTC.SCA.SCO.PostgresDatabase.
5. Sous Services, exécutez le service CreateTable avec les entrées suivantes :
Pour dataShapeName, recherchez et sélectionnez la nouvelle forme de données créée à l'étape 1.
Pour dbInfo, entrez un tableau JSON contenant les informations de la base de données pour la forme de données :
dataShapeName : nom de la forme de données pour laquelle la nouvelle table de base de données est ajoutée.
indexedFields : colonnes à indexer. L'indexation accélère les recherches et le tri. Plusieurs champs indexés peuvent être définis dans un tableau. Chaque élément du tableau peut contenir les propriétés suivantes :
name : nom de la colonne. Obligatoire.
unique : permet de spécifier si la colonne doit avoir une valeur unique.
fields : toute colonne pour laquelle une spécification supplémentaire est requise. Vous pouvez définir plusieurs champs dans un tableau. Chaque élément du tableau peut contenir les propriétés suivantes :
name : nom de la colonne. Obligatoire.
length : longueur de la colonne, si la colonne est une String et si une longueur différente de la longueur par défaut de la base de données est requise.
unique : permet de spécifier si la colonne doit avoir une valeur unique.
notNull : permet de spécifier si la colonne ne doit pas être nulle.
foreignKeys : toutes les définitions de colonne de clé étrangère pour la nouvelle table de base de données. Vous pouvez définir plusieurs clés étrangères dans un tableau. Chaque élément du tableau doit contenir les propriétés suivantes :
name : nom de la colonne de la forme de données actuelle à utiliser comme clé étrangère.
referenceDataShapeName : forme de données de la table de base de données référencée.
referenceFieldName : nom du champ contenant la valeur référencée.
Pour en savoir plus, consultez la section Ajout ou suppression de clés étrangères.
Par exemple, pour que la nouvelle forme de données MyObject ne comporte aucun champ indexé, ait une clé étrangère et pour définir une longueur de 4 000 caractères pour le champ Location, entrez ce qui suit :
{
"dataShapeName": "MyObject",
"indexedFields": [],
"foreignKeys": [{"name":"WorkDefinitionUID", "referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition", "referenceFieldName":"UID"}],
"fields": [
{
"name": "Location",
"length": 4000
}
]
}
6. Accédez au gestionnaire d'ordres de fabrication par défaut (PTC.SCA.SCO.DefaultProductionOrderManager).
7. Sous Services, cliquez sur Ajouter et créez les services nécessaires pour gérer les entités de la nouvelle forme de données. Utilisez les services CRUD existants pour les entités Operator Advisor en tant que modèles.
Un service de création. Dans cet exemple, entrez CreateMyObjects comme nom du service. Dans l'éditeur de service, entrez le code suivant :
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
Un service de suppression. Dans cet exemple, entrez DeleteMyObject comme nom du service. Dans l'éditeur de service, entrez le code suivant :
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
Un service de mise à jour. Dans cet exemple, entrez UpdateMyObjects comme nom du service. Dans l'éditeur de service, entrez le code suivant :
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
Un service permettant de récupérer une instance individuelle de cette forme de données. Dans cet exemple, entrez GetMyObject comme nom du service. Dans l'éditeur de service, entrez le code suivant :
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].GetEntity(params);
Un service permettant de récupérer plusieurs instances de cette forme de données, incluant éventuellement les paramètres d'entrée de filtre, de décalage et de limite. Si aucun paramètre d'entrée n'est spécifié, toutes les instances de MyObject sont renvoyées. Dans cet exemple, entrez GetMyObjects comme nom du service. Dans l'éditeur de service, entrez le code suivant :
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
8. Cliquez sur Enregistrer pour enregistrer les nouveaux services dans le gestionnaire d'ordres de fabrication par défaut (PTC.SCA.SCO.DefaultProductionOrderManager).