Изменение таблиц в Windchill 10, 9 при помощи DataUtility

JCA это клиент- серверный технология компании ptc c помощью которой строятся странички которые видит пользователь Windchill

Будет полезно если вы хотите изменить значение, либо вид ячейки отображаемые через Windchill JCA таблички.

DataUtility- получает значение которое нужно отобразить и назначает ячейке рендор.
основная обработка происходит в методе
/*
arg0- имя атрибута
arg1- обьект соответствующий строчке таблицы
arg2- контекст
DefaultModelContext [descriptor=»ComponentDescriptor [id=»soglas» label=»null» s
ummary=»null» disableAction=»null» mainType=»WCTYPE|com.ptc.windchill.wp.WorkPac
kage» configurableTableId=»null» modelAttributes=»[soglas]» properties=»null» da
taUtility=»экземпляр дата утилити» descriptorList=»[]
» mode=»null» type=»null» tooltip=»null» jsid=»null»]» commandBean=»com.ptc.netm
arkets.util.beans.NmCommandBean@3ab99c20″ descriptorType=»TABLE» descriptorMode=
«VIEW»]

*/
public Object getDataValue(String arg0, Object arg1, ModelContext arg2)
Технология удобная, но из-за отсутствия документации немного запутанная.

Компоненты с помощью которых выполняется рендоринг ячеек находятся в каталоге codebase\WEB-INF\wncWeb.jar
wncWeb\com\ptc\core\components\rendering\guicomponents\

Названия говорящие поэтому комментировать нет смысла, чтобы понять как работает компонента рекомендую декомпилировать.

AttributeDisplayCompositeComponent.class
AttributeGuiComponent.class
AttributeInputComponent.class
AttributeInputCompositeComponent.class
BooleanDisplayComponent.class
BooleanInputComponent.class
BreadCrumbActionGuiComponent.class
DateDisplayComponent.class
DateInputComponent.class
DependentAttributeInputComponent.class
EnumeratedTypeDisplayComponent.class
HTMLGuiComponent.class
IconComponent.class
MessageGlyphComponent.class
MultiValuedDisplayComponent.class
MultiValuedInputComponent.class
NmActionGuiComponent.class
NumberInputComponent.class
NumericDisplayComponent.class
NumericInputComponent.class
PickerInputComponent.class
PrincipalDisplayComponent.class
PrintableComponent.class
RevisionInputComponent.class
StringInputComponent.class
TemplateInputComponent.class
TextDisplayComponent.class
UrlDisplayComponent.class
UrlInputComponent.class
VisualizationComponent.class

com.ptc.core.components.factory.dataUtilities.AbstractDataUtility- базовый класс от которого наследуются все остальные утилиты.

Посмотреть все DataUtility можно через команду Windchill shell «windchill wt.services.ac.impl.ACReport»

Чтобы с помощью DataUtility изменить ячейку нужно:

1. Создать файл customservices.properties или записать в существующий файл properties
2. Добавить в него описание соответствия атрибута и нашего кастомного класса DataUtility в одну строчку без переносов

wt.services/svc/default/com.ptc.core.components.descriptor.DataUtility/customAttribute/java.lang.Object/
0=ext.CustomDataUtility/singleton
customAttribute- это атрибут отображение которого мы хотим поменять
3. Добавляем атрибут к типу
В существующий либо новый xml Windchill\codebase\config\attributes\
4. Так же можно использовать файл codebase\config\logicrepository\xml\AllClients.xml
(only if non persistable attribute)






5. codebase\LogicalAttributes.xml



customAttribute
IBA|customAttribute

6. Должно начать работать свойства и их значения

Служебные отчеты для просмотра свойств обьектов и DataUtility:
Windchill/netmarkets/jsp/property/propertyReport.jsp
Windchill/netmarkets/jsp/carambola/createtableview/availableAttributesReport.jsp

cmd
dir | findstr Component.class
Печатает содержимое директории по шаблону «Component.class»

Если лень разбираться как достать значение свойства можно наследовать от DefaultDataUtility

И значение получать так:
String atribValue = ((AttributeDisplayCompositeComponent) super.getDataValue(arg0, arg1, arg2)).getPrintableValue();

Если у вас есть возможность поменять код JCA таблички, достаточно прописать dataUtilityId с необходимым значением.

windchill shell : windchill stop && windchill start
tomcat restart
После всех настроек не забывайте пересоздать визуальное представление, оно иногда кэшируеться не корректно.
Иначе результата вы просто не увидите.
В случае проблем пользуйтесь дебагом, заметка есть на сайте.На клиенте используйте дополнительный параметр &jcaDebug=1.

Как показала практика возможности Windchill JCA и в частноти dataUtility практически не ограничивают
дизайнеров и программистов в создании интерфейсов, которые будут удобны пользователям.
Пользуйтесь Windchill JCA , создавайте юзабилити интерфейсы и делайте Windchill удобнее.
Особенно радует приемственность фреймворка в Windchill 10.1

Бонус полезных презентаций для Windchill Developer, пароль по запросу
http://depositfiles.com/files/ejdv0e1ja