Перейти к публикации

BMIDE CDT - custom extension


alexkr

Рекомендованные сообщения

Всем привет.

Уже всю голову сломал, перекурил документ Business Modeler IDE Best Practices Guide (стр 220-226 и не только), выучил и повторил все примеры от https://www.learnteamcenter.com/post/building-custom-extension-with-example до https://teamcenter-open-gate.blogspot.com/2016/12/teamcenter-itk-api-bom-creation-with.html

 

И даже раскопал пример scribd

 

В общем, хочу сделать проект с кастомным обработчиком, выполняемым  PostAction.

.

Причем именно в BMIDE.

 

TC10.1

VC10

 

cсоздал проект

настроил Build, path and symbols

создал library (активная)

создал 'extension (активное)

добавил extension availibility 

перешел на объект, к операции настроил extension attachment

выполнил Code Generation - C++ Classes

 

в Navigation tab появляется src/server/...

там 3 файла, среди который один схх, второй рхх

 

В схх файле создается метод-заглушка

#include...
int MyExtension(METHOD_message_t * msg, va_list args)

{

return 0;

}

 

все шикарно.

но если добавляю код

#include <fclasses/tc_string.h>
#include <tc/tc.h>
#include <tccore/grm.h>
#include <tccore/aom.h>
#include <tccore/aom_prop.h>
#include <tccore/grm_msg.h>
#include <property/prop.h>
#include <fclasses/tc_stdio.h>
#include <fclasses/tc_stdlib.h>
#include <fclasses/tc_string.h>
#include <fclasses/tc_stdarg.h>
#include <fclasses/iman_stdarg.h>
#include <iostream>
#include <stdarg.h>
using namespace std;

int MyExtension(METHOD_message_t * msg, va_list args)

{
printf("Hello, this is first message");
return 0;

}

Project - Build Project

Все ОК

Упаковываю проект, устанавливаю

 

через cmd VS проверяю dumpbin /EXPORTS %path%\%mylibrary%.bin

все ок - выводит имя метода (правда во всех примерах с _перед именем, а у меня без _ - но и в hxx тоже  extern без _)

 

Выполняю действия (например, создал проект по реакции PostAction на Item - create)

в консоль ничего не выводится.

 

Пробовал повторить проект с https://www.learnteamcenter.com/post/building-custom-extension-with-example

вместо DesignItemRevision взял ItemRevision (n3_property1)

DocumentRevision (n3_DocProperty1)

 

при специальной вставке (IMAN-SPecification) DocumentRevision в ItemRevision с должно выполняться

ItemRevision.n3_property1 = DocumentRevision.n3_DocProperty1 (да, это не из С++, я раньше только на С# немного программировал)

 

#include <N3library/N3extenstion.hxx>
#include <fclasses/tc_string.h>
#include <tc/tc.h>
#include <tccore/grm.h>
#include <tccore/aom.h>
#include <tccore/aom_prop.h>
#include <tccore/grm_msg.h>
#include <property/prop.h>
#include <fclasses/tc_stdio.h>
#include <fclasses/tc_stdlib.h>
#include <fclasses/tc_string.h>
#include <fclasses/tc_stdarg.h>
#include <fclasses/iman_stdarg.h>
#include <iostream>
#include <stdarg.h>
using namespace std;

int N3extenstion( METHOD_message_t * msg, va_list args )
{
	tag_t tPObject = va_arg(args,tag_t);
	tag_t tSObject = va_arg(args,tag_t);
	char* pPropertyValue = NULL;
	AOM_ask_value_string(tSObject, "n3_DocProperty1", &pPropertyValue);
	//cout << "pPropertyValue = " + pPropertyValue;
	AOM_lock(tPObject);
	AOM_set_value_string(tPObject,"n3_property1",pPropertyValue);
	AOM_save(tPObject);
	AOM_unlock(tPObject);
	std::cout << "my first console message";
 
	return 0;

}

 

и ничего не происходит

Ни cout, ни printf не выводят в консоль ничего. 

 

еще одна странность - раз 6 Build проекта сделаешь без изменений - пойдет какая нибудь ошибка, которую исправить нельзя, даже удали код (привязана к строке, удаление кода не удаляет ошибку)

 

P.S. Как понял - при разработке через BMIDE кастомные бибилотеки, экстеншены автоматом регитсрируются. Т.е. прописывать допом в preferences не нужно.

 

Может кто имел опыт - подскажет. Буду признателен. 

 

 

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

Соберите сами свой бизнес моделлер 

т.е возьмите правильной версии чистый эклипс с cdt 

а потом впрысните туда бмидешные жарки, в манах описано 

Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, Krusty сказал:

Соберите сами свой бизнес моделлер 

т.е возьмите правильной версии чистый эклипс с cdt 

а потом впрысните туда бмидешные жарки, в манах описано 

 

т.е. если взять дистриб ТС10.1, из него поставить также BMIDE и установить VC 10, то даже при правильных настройках и безошибочной сборке проекта кастомный код работать не будет?

 

P.S.

Пошел изучать 

Business Modeler IDE Guide

Server_Customization_Best_Practices_Guide

Business Modeler IDE Best Practices Guide

 

в Business Modeler IDE Guide

есть такой раздел

Цитата

Install the Business Modeler IDE to an existing Eclipse environment

 

я подозреваю, это оно :-)

Ссылка на сообщение
Поделиться на других сайтах

Поделюсь результатами

1. BMIDE нормально работает из коробки (по крайней мере ТС 10.1.6)

Просто установить, установить VS2010 SP1

Создать проект, создать свою библиотеку, экстеншн

 

2. А вот где писать код (казалось бы в Impl - читаем Server Customization Programmer's Guide )

image.png

 

image.png

 

и вот вопрос

после генерации у нас есть 

srv/server

 

а есть 

Generated Source

 

причем в srv/server лежит шаблон  Impl файла.

Казалось бы - его кастомизируй и дело в шляпе.

 

Но какие я туда алгоритмы не загонял - не работает.

 

даже std::cout ничего не выводит

 

А вот наблюдение - если Build без ошибки (именно в части кода), то проект устанавливается. Я подозреваю что дело не в BMIDE и его варианте установке, а в "прокладке" - нужно как кто правильно логику тестовую хотя бы реализовать

буду дальше осваивать.

 

Разберусь во всем - дам инструкцию :-)

 

Ссылка на сообщение
Поделиться на других сайтах
  • 8 месяцев спустя...
01.03.2023 в 17:54, alexkr сказал:

Поделюсь результатами

1. BMIDE нормально работает из коробки (по крайней мере ТС 10.1.6)

Просто установить, установить VS2010 SP1

Создать проект, создать свою библиотеку, экстеншн

 

2. А вот где писать код (казалось бы в Impl - читаем Server Customization Programmer's Guide )

image.png

 

image.png

 

и вот вопрос

после генерации у нас есть 

srv/server

 

а есть 

Generated Source

 

причем в srv/server лежит шаблон  Impl файла.

Казалось бы - его кастомизируй и дело в шляпе.

 

Но какие я туда алгоритмы не загонял - не работает.

 

даже std::cout ничего не выводит

 

А вот наблюдение - если Build без ошибки (именно в части кода), то проект устанавливается. Я подозреваю что дело не в BMIDE и его варианте установке, а в "прокладке" - нужно как кто правильно логику тестовую хотя бы реализовать

буду дальше осваивать.

 

Разберусь во всем - дам инструкцию :-)

 

 

Добрый день. Удалось разобрать до конца в итоге?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...