Esempi di personalizzazione dei servizi di importazione
Le sezioni seguenti forniscono personalizzazioni di esempio per determinati servizi sostituibili:
Import
GetImportSupportedBaseTypes
Il servizio GetImportSupportedBaseTypes consente di controllare i tipi di base delle proprietà supportati per l'importazione. Questa personalizzazione di esempio esclude un tipo di base delle proprietà dall'importazione.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportExportEquipmentUtils per la modifica.
2. In Servizi trovare GetImportSupportedBaseTypes e fare clic su per sostituire il servizio.
3. Nell'editor dello script visualizzare l'elenco dei tipi di base supportati.
var result = ['Boolean', 'DateTime', 'Integer', 'Long', 'JSON', 'Number', 'String'];
4. Per escludere un tipo di base dall'importazione, eliminare o commentare il tipo di base che si desidera escludere dall'elenco. Per escludere un tipo di base JSON, ad esempio, aggiornare il servizio come indicato di seguito.
var result = ['Boolean', 'DateTime', 'Integer', 'Long', 'Number', 'String'];
5. Fare clic su Fine per salvare le modifiche al servizio.
6. Fare clic su Salva per salvare l'oggetto.
Dopo avere apportato questa modifica, se nel foglio di calcolo dell'importazione sono presenti proprietà con il tipo di base JSON, tali proprietà non vengono importate. Quando il foglio di calcolo viene caricato e convalidato, le proprietà con il tipo di base JSON vengono conteggiate come non valide e vengono ignorate durante l'importazione.
* 
Per visualizzare i dettagli di dati non validi per l'importazione, accedere ai log dello script.
1. In ThingWorx Composer fare clic su Monitoraggio nel riquadro di sinistra.
2. In Log fare clic su ScriptLog.
3. Selezionare una riga nella tabella ScriptLog per visualizzare Messaggi log per tale voce.
ParseImportFile
Questo esempio personalizza il processo di analisi dell'importazione in modo che i messaggi di analisi vengano visualizzati nella tabella ScriptLog con il livello Avvertenza.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ParseExcelProcessor.
2. In Servizi trovare ParseImportFile e fare clic su per sostituire il servizio.
3. Nel riquadro dello script impostare il livello del logger su WARN, come indicato di seguito.
var result = (function () {
var constants = Things["PTC.SCA.SCO.Common.ImportExportEquipmentUtils"].GetImportExportConstants();
logger.warn("Parsing process started");
var user = Resources["CurrentSessionInfo"].GetCurrentUser();
var lastFileEntry = Things["PTC.SCA.SCO.Common.ImportProcessHistoryDataTable"].GetDataTableEntryByKey({ key: user });
// Invoke service which parses equipment data
var parsedInfoTable = Resources["PTC.Factory.CommonUtilities"].ParseImportFile({
fileName: lastFileEntry.FileName /* STRING */ ,
dataShape: constants.importExportDataShape /* DATASHAPENAME */
});
logger.warn("Parsing process completed");
return parsedInfoTable;
})();
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidateEquipment
Questo esempio personalizza la convalida dell'impianto in modo che quest'ultimo venga creato anche quando il progetto specificato nel foglio di calcolo dell'importazione non esiste.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateEquipment e fare clic su per sostituire il servizio.
3. Nell'editor dello script individuare e commentare le righe riportate di seguito:
if (project.length > 0 && !validateProject(project)) {
logger.warn("Import Validation Process: [General Information Tab] [Name: " + name + "] Invalid reason: Project does not exist");
isInformationIncorrect = true;
}
In questo modo il codice ignora la convalida dell'esistenza del progetto specificato per l'impianto.
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidateEquipmentHierarchyTab
Questa personalizzazione di esempio fa in modo che ScriptLog registri l'avvio del servizio ValidateEquipmentHierarchyTab come voce Traccia.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateEquipmentHierarchyTab e fare clic su per sostituire il servizio.
3. Nell'editor dello script aggiungere il codice seguente alla fine dello script.
logger.trace("Validation complete for EquipmentHierarchyTab custom service");
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
6. Passare a Monitoraggio > ScriptLog e modificare le impostazioni del livello di registrazione in Traccia. Il log include ora una voce Traccia per l'immissione del servizio personalizzato ValidateEquipmentHierarchyTab.
ValidateImportFile
La personalizzazione di esempio seguente fa in modo che la tabella Risultati convalida visualizzi il nome della scheda del foglio di lavoro come Gerarchia anziché Struttura impianto.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateImportFile e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare e commentare le righe seguenti:
var equipmentHierarchyToken = Resources["RuntimeLocalizationFunctions"].GetEffectiveTokenForLanguage({
language: currentUserLanguage,
token: constants.equipmentHierarchyToken
});
4. Modificare l'equazione nella riga immediatamente dopo il nuovo commento per cambiare il valore da equipmentHierarchyToken a Hierarchy nel modo seguente:
hierarchyReport[workSheetColumn] = Hierarchy;
5. Fare clic su Fine per salvare le modifiche al servizio.
6. Fare clic su Salva per salvare l'oggetto.
ValidateLocallyBoundProperty
Questo esempio personalizza la convalida delle proprietà associate localmente in modo che solo l'oggetto PTC.SCA.SCO.Demo.KepServer specificato possa essere utilizzato per le proprietà associate localmente.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateLocallyBoundProperty e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare le righe seguenti:
// Check if server thing or property for bounding exists
if (!boundThingExists || property.length === 0) {
validationResult = me.GenerateReportForEquipment({
operation: constants.invalid
});
if (!boundThingExists) {
logger.warn("Import Validation Process: [Properties Tab] [Equipment Name: " + thingName + " Name: " + name + "] Invalid reason: Thing does not exist");
}
if (property.length === 0) {
logger.warn("Import Validation Process: [Properties Tab] [Equipment Name: " + thingName + " Name: " + name + "] Invalid reason: Property not specified");
}
} else {
Sostituirle con il codice seguente:
// Check if server thing or property for bounding exists and if thing is same as required
if (!boundThingExists || thing !== "PTC.SCA.SCO.Demo.KepServer" || property.length === 0) {
validationResult = me.GenerateReportForEquipment({
operation: constants.invalid
});
if (!boundThingExists) {
logger.warn("Import Validation Process: [Properties Tab] [Equipment Name: " + thingName + " Name: " + name + "] Invalid reason: Thing does not exist");
}
if (thing !== "PTC.SCA.SCO.Demo.KepServer") {
logger.warn("Import Validation Process: [Properties Tab] [Equipment Name: " + thingName + " Name: " + name + "] Invalid reason: Property can be locally bounded only to specified thing");
}
if (property.length === 0) {
logger.warn("Import Validation Process: [Properties Tab] [Equipment Name: " + thingName + " Name: " + name + "] Invalid reason: Property not specified");
}
}
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidatePropertiesTab
Questo esempio personalizza la convalida della scheda Proprietà del foglio di calcolo dell'importazione, in modo che se il nome della proprietà non inizia con InternalPrefix, viene considerato un nome di proprietà valido.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidatePropertiesTab e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare la riga seguente:
var isNameValid = isValidPropertyName(propertyName);
Inserire il codice seguente come riga successiva:
isNameValid = !propertyName.startsWith("InternalPrefix");
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidateProperty
Questo esempio personalizza la convalida in modo che qualsiasi proprietà specificata nel foglio di calcolo dell'importazione avente il valore Associato in remoto nella colonna Associazione venga considerata non valida e non venga creata o aggiornata dal processo di importazione.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateProperty e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare e commentare le righe seguenti:
} else if (equalsIgnoreCase(binding, constants.remotelyBound)) {
validationResult = me.ValidateRemotelyBoundProperty({
parsedInfoTable: parsedInfoTable
});
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidateRemotelyBoundProperty
Questo esempio personalizza la convalida in modo che se il valore Nome proprietà remota di una proprietà associata in remoto esistente viene modificato nel foglio di calcolo dell'importazione, il processo di convalida non riconosce questa modifica e il valore della proprietà non viene aggiornato durante l'importazione.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateRemotelyBoundProperty e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare le righe seguenti:
if (isRemotePropertyNameDifferent(remotePropertyName, remotePropertyBindingInfo)) {
updated = true;
} else if (isCacheIntervalDifferent(cacheInterval, thingName, name)) {
Commentare il codice tramite l'istruzione else, come illustrato di seguito:
/* if (isRemotePropertyNameDifferent(remotePropertyName, remotePropertyBindingInfo)) {
updated = true;
} else */
if (isCacheIntervalDifferent(cacheInterval, thingName, name)) {
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ValidateGeneralInformationTab
Questo esempio personalizza la convalida in modo che qualsiasi impianto definito nel foglio di calcolo che non abbia il prefisso obbligatorio Equipment_ nel nome venga considerato non valido e non venga creato durante l'importazione.
Per personalizzare la convalida della scheda Informazioni generali durante l'importazione di un impianto, attenersi alla procedura descritta di seguito.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportValidator.
2. In Servizi trovare ValidateGeneralInformationTab e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare la riga di codice seguente:
// validate context and network
Immediatamente prima della riga di codice inserire il codice seguente:
if (name.substring(0, 10) !== "Equipment_") {
reportInfoTable = markEquipment(reportInfoTable, reportDataShapeFields, constants.invalid);
logger.warn("Import Validation Process: [General Information Tab] [Row number: " + rowNum + "] Invalid reason: Name does not have required prefix");
continue;
}
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
Import
Questa personalizzazione di esempio impedisce l'esecuzione del processo di post-importazione.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare Import e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare e commentare le righe seguenti:
// Run post-import process
me.PostImport({
parsedInfoTable: parsedInfoTable
});
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ImportEquipmentHierarchy
Questa personalizzazione di esempio fa in modo che ScriptLog registri l'avvio del servizio ImportEquipmentHierarchy come voce Traccia.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportEquipmentHierarchy e fare clic su per sostituire il servizio.
3. Nell'editor dello script aggiungere il codice seguente alla fine dello script.
logger.trace("Entering ImportEquipmentHierarchy custom service");
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
6. Passare a Monitoraggio > ScriptLog e modificare le impostazioni del livello di registrazione in Traccia. Il log include ora una voce Traccia per l'immissione del servizio personalizzato ImportEquipmentHierarchy.
ImportEquipmentInformation
Questa personalizzazione di esempio aggiunge il prefisso "E_" al nome visualizzato di default di qualsiasi componente di impianto per il quale non è stato specificato alcun valore per il nome visualizzato nel foglio di calcolo dell'importazione. Il nome visualizzato di default è il nome dell'oggetto in ThingWorx Composer.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportEquipmentInformation e fare clic su per sostituire il servizio.
3. Nell'editor dello script individuare il codice seguente:
if (thing != null) {
if (displayName.length > 0) {
thing.displayName = displayName;
}
Dopo la parentesi graffa di chiusura inserire il codice seguente.
else {
thing.displayName = "E_" + name;
}
Il codice ora viene visualizzato come segue:
if (thing != null) {
if (displayName.length > 0) {
thing.displayName = displayName;
} else {
thing.displayName = "E_" + name;
}
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ImportGeneralInformation
Questa personalizzazione di esempio visualizza le informazioni sul numero di righe elaborate durante l'importazione in ScriptLog e cambia il livello di registrazione visualizzato in Traccia.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportEquipmentInformation e fare clic su per sostituire il servizio.
3. Nel riquadro del servizio, aggiungere la riga di codice seguente dopo la riga 27 per inviare le informazioni del log sulle righe elaborate.
logger.trace("Import Process: [General Information Tab] Already processed rows: " + (i + 1));
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
Per modificare il livello di registrazione visualizzato nella tabella ScriptLog, attenersi alla procedura descritta di seguito.
1. In ScriptLog fare clic su Configura.
2. Nella finestra Configura log, selezionare il livello desiderato nel menu a discesa Livello di registrazione.
3. Fare clic su Applica.
ImportNoneBoundProperty
La personalizzazione di esempio seguente fa in modo che qualsiasi proprietà specificata nel foglio di calcolo dell'importazione con il valore di Associazione impostato su Nessuna venga creata in ThingWorx Composer con Registrata impostata su true, indipendentemente dal valore di Registrata specificato nel foglio di calcolo dell'importazione.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportNoneBoundProperty e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare la riga seguente:
var logged = getBooleanValue(equipmentProperty[loggedHeader]);
Modificare la riga come segue:
var logged = true;
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ImportProperties
In questa personalizzazione di esempio il processo di importazione non crea proprietà associate localmente, anche se sono specificate nel foglio di calcolo di importazione. Non vengono inoltre segnalate come righe non valide dal processo di importazione.
Per personalizzare l'importazione di proprietà durante l'importazione di un impianto, attenersi alla procedura descritta di seguito.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportProperties e fare clic su per sostituire il servizio.
3. Nell'editor dello script trovare e commentare le righe seguenti:
} else if (equalsIgnoreCase(binding, constants.locallyBound)) {
me.ImportLocallyBoundProperty({
equipmentProperty: propertyRowInfoTable
});
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
ImportRemotelyBoundProperty
La personalizzazione di esempio seguente fa in modo che qualsiasi proprietà creata dal processo di importazione che è stata specificata nel foglio di calcolo dell'importazione con un valore di Associazione impostato su Associato in remoto abbia un valore di In assenza di connessione impostato su Combina tutte le modifiche in un ultimo valore modificato nella pagina Proprietà e avvisi per il componente di impianto in ThingWorx Composer.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare ImportRemotelyBoundProperty e fare clic su per sostituire il servizio.
3. Nell'editor dello script individuare le sezioni di codice seguenti e in ogni sezione modificare il valore di NONE in FOLD:
if (params.whenDisconnected.length === 0) {
params.whenDisconnected = 'NONE';
}
if (whenDisconnected.length === 0 || whenDisconnected.length > 0 && !isWhenDisconnectedAllowed(whenDisconnected)) {
whenDisconnected = 'NONE';
}
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
PreImport
Questa personalizzazione di esempio fa in modo che ScriptLog registri l'avvio del servizio PreImport come voce Traccia.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare PreImport e fare clic su per sostituire il servizio.
3. Nell'editor dello script aggiungere il codice seguente alla fine dello script per attivare il servizio personalizzato PreImport:
logger.trace("Entering PreImport custom service");
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
6. Passare a Monitoraggio > ScriptLog e modificare le impostazioni del livello di registrazione in Traccia. Il log include ora una voce Traccia per l'immissione del servizio personalizzato PreImport.
PostImport
Questa personalizzazione di esempio fa in modo che ScriptLog registri l'avvio del servizio PostImport come voce Traccia.
1. In ThingWorx Composer, aprire l'oggetto PTC.SCA.SCO.Common.ImportProcessor.
2. In Servizi trovare PostImport e fare clic su per sostituire il servizio.
3. Nell'editor dello script aggiungere il codice seguente alla fine dello script per attivare il servizio personalizzato PostImport:
logger.trace("Entering PostImport custom service");
4. Fare clic su Fine per salvare le modifiche al servizio.
5. Fare clic su Salva per salvare l'oggetto.
6. Passare a Monitoraggio > ScriptLog e modificare le impostazioni del livello di registrazione in Traccia. Il log include ora una voce Traccia per l'immissione del servizio personalizzato PostImport.