Добавление пользовательских свойств и профилей данных
Добавление пользовательских свойств и профилей данных
Модель данных Operator Advisor может быть расширена, чтобы добавить данные, характерные для бизнеса, к моделям, которые не указаны в стандартной функции. Это выполняется следующим образом.
Добавьте пользовательские свойства к существующим сущностям Operator Advisor, обновив профиль данных _AP, связанный с сущностью Operator Advisor.
Добавьте новые сущности в Operator Advisor, создав пользовательские профили данных и сервисы для управления ими.
Добавьте пользовательские свойства в профили данных _AP
Большинство сущностей в модели данных Operator Advisor связаны с профилем данных _AP для добавления пользовательских свойств. Например, у профиля данных порядка работы (PTC.SCA.SCO.JobOrder) есть связанный профиль данных PTC.SCA.SCO.JobOrder_AP.
Для добавления пользовательского свойства в сущность Operator Advisor воспользуйтесь процедурой, указанной ниже. В этом примере новое свойство Location добавлено к профилю данных PTC.SCA.SCO.JobOrder_AP.
1. В ThingWorx Composer перейдите в профиль данных _AP для сущности. В этом примере перейдите в PTC.SCA.SCO.JobOrder_AP.
2. Под Определениями полей нажмите Добавить.
3. На панели Определение нового поля укажите следующее:
Наименование: наименование свойства. В этом примере введите Location.
Базовый тип: тип данных для свойства. В этом примере выберите STRING.
4. Нажмите , чтобы добавить новое определение поля.
5. Нажмите Сохранить, чтобы сохранить обновления в профиль данных.
6. Перейдите к вещи базы данных, настроенной для вашей системы, например, PTC.SCA.SCO.PostgresDatabase.
7. В разделе Сервисы выполните службу AddColumn со следующими входными данными:
Для dataShapeName выполните поиск и выберите профиль данных _AP, к которому добавлено новое определение поля. В этом примере выполните поиск и выберите PTC.SCA.SCO.JobOrder_AP.
Для fieldName введите наименование нового определения поля. В этом примере введите Location.
Для dbInfo введите информацию о базе данных для нового столбца:
name: наименование столбца, который добавляется в базу данных для нового свойства. Обязательные параметры
length: длина для нового столбца, если она отличается от длины столбца по умолчанию для базы данных.
unique: укажите, если у столбца должно быть уникальное значение.
notNull: укажите, если значение столбца не должно быть равно null.
Для этого примера введите:
{"name":"Location","length":4000}
Следующий код является примером того, как пользовательское свойство включается в сервис для программного заполнения атрибута. Этот код использует сервис CreateInfoTable для слияния профилей данных PTC.SCA.SCO.JobOrder и PTC.SCA.SCO.JobOrder_AP в одну таблицу данных и заполняет новый атрибут Location со значением 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
});
Включение пользовательских свойств в мэшап
Наилучший способ включения свойств в мэшап - выполнение следующих этапов.
1. Добавьте пользовательское свойство в профиль данных _AP и выполните сервис AddColumn в соответствии с описанием в предыдущем разделе. Для этого примера мы продолжим действия с пользовательским свойством Location, добавленным в профиль данных PTC.SCA.SCO.JobOrder_AP в предыдущем разделе.
2. Создайте новый профиль данных с определениями поля из профиля данных основной сущности и профиля данных _AP.
Для этого примера создайте новый профиль данных с наименованием MyJobOrder. Добавьте определения поля для ID (из профиля данных PTC.SCA.SCO.JobOrder) и Location (из профиля данных PTC.SCA.SCO.JobOrder_AP).
3. Найдите вещь PTC.SCA.SCO.ProductionOrderUtils.
4. В разделе Сервисы добавьте новый сервис, чтобы создать элементы профиля данных, созданного на 2 этапе. Для входных и выходных параметров используйте таблицы данных элемента нового профиля данных.
Для этого примера добавьте новый сервис, называющийся CreateMyJobOrder, с таблицей данных профиля данных MyJobOrder для входных и выходных параметров. В редакторе сервиса введите код, идентичный указанному ниже:
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. При использовании этого нового сервиса в мэшапе создаются новые элементы сущности, в которых есть пользовательское свойство. В этом примере при использовании сервиса CreateMyJobOrder в мэшапе создаются новые порядки работы со свойством ID, занесенным в таблицу базы данных PTC.SCA.SCO.JobOrder и пользовательским свойством Location, занесенным в таблицу базы данных PTC.SCA.SCO.JobOrder_AP.
Добавление пользовательских профилей данных
Чтобы добавить новые сущности в Operator Advisor создайте новый профиль данных для сущности с необходимыми сервисами для управления экземплярами профиля данных.
1. Создайте новую структуру данных в ThingWorx Composer. В этом примере создайте наименование для профиля данных MyObject.
2. В разделе Определение полей нажмите Добавить и укажите новые определения полей для каждого свойства, которое необходимо включить в профиль данных.
3. Нажмите Сохранить для сохранения объема данных.
4. Перейдите к вещи базы данных, настроенной для вашей системы, например, PTC.SCA.SCO.PostgresDatabase.
5. В разделе Сервисы выполните службу CreateTable со следующими входными данными:
Для dataShapeName выполните поиск и выберите новый профиль данных, созданный на 1 этапе.
Для dbInfo введите массив JSON, содержащий информацию базы данных для профиля данных:
dataShapeName: наименование профиля данных, для которого добавляется новая таблица базы данных.
indexedFields: столбцы, которые необходимо проиндексировать. Индексирование делает поиск быстрее и помогает выполнять сортировку. В массиве можно установить несколько индексируемых полей. Каждый элемент в массиве может содержать следующие свойства:
name: наименование столбца. Обязательные параметры.
unique: укажите, если у столбца должно быть уникальное значение.
fields: любой столбец, для которого требуется дополнительная спецификация. В массиве можно установить несколько полей. Каждый элемент в массиве может содержать следующие свойства:
name: наименование столбца. Обязательные параметры.
length: длина столбца, если он является String, и необходима длина, отличающаяся от длины по умолчанию.
unique: укажите, если у столбца должно быть уникальное значение.
notNull: укажите, если значение столбца не должно быть равно null.
foreignKeys: любые определения столбцов внешнего ключа для новой таблицы базы данных. В массиве можно установить несколько внешних ключей. Каждый элемент массива должен содержать следующие свойства:
name: наименование столбца в качестве внешнего ключа на текущим профиле данных.
referenceDataShapeName: профиль данных ссылочной таблицы базы данных.
referenceFieldName: имя поля, содержащего ссылочное значение.
Например, чтобы отменить индексированные поля, внешний ключ и установить длину поля MyObject на 4000 знаков для нового профиля данных Location введите:
{
"dataShapeName": "MyObject",
"indexedFields": [],
"foreignKeys": [{"name":"WorkDefinitionUID", "referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition", "referenceFieldName":"UID"}],
"fields": [
{
"name": "Location",
"length": 4000
}
]
}
6. Перейдите в Production Order Manager по умолчанию (PTC.SCA.SCO.DefaultProductionOrderManager).
7. В разделе Сервисы нажмите Добавить и создайте необходимые сервисы для управления сущностями нового профиля данных. Используйте существующие сервисы CRUD для сущностей Operator Advisor в качестве моделей.
Служба создания. В этом примере введите в качестве наименования сервиса CreateMyObjects. В редакторе сервиса введите следующий код:
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
Сервис удаления. В этом примере введите в качестве наименования сервиса DeleteMyObject. В редакторе сервиса введите следующий код:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
Сервис обновления. В этом примере введите в качестве наименования сервиса UpdateMyObjects. В редакторе сервиса введите следующий код:
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
Сервис для загрузки отдельных элементов этого профиля данных. В этом примере введите в качестве наименования сервиса GetMyObject. В редакторе сервиса введите следующий код:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].GetEntity(params);
Сервис для загрузки нескольких элементов этого профиля данных, включая в качестве дополнения фильтр, смещение и ограничение входных параметров. Если не указаны входные параметры, то будут возвращены все элементы MyObject. В этом примере введите в качестве наименования сервиса GetMyObjects. В редакторе сервиса введите следующий код:
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
8. Нажмите Сохранить, чтобы сохранить новые сервисы в Production Order Manager по умолчанию (PTC.SCA.SCO.DefaultProductionOrderManager).