Вызов/создание объекта XAF из внешнего приложения

136 views
Skip to first unread message

Дмитрий С

unread,
Apr 15, 2014, 2:06:20 PM4/15/14
to russian-dev...@googlegroups.com
Здравствуйте!

Недавно начал изучать XAF, столкнулся рядом проблем:

Исходные данные:
Есть два приложения - XAF с неким набором классов и ГИС (геоинформационная система). Пространственные и реестровые(XAF) объекты могут быть связаны между собой - есть таблица, куда записываются какие объекты связываются. Также имеется конфиг, где прописано, какие классы могут иметь пространственную привязку. 

Задачи:
1. Связку реестровых и пространственных объектов реализовал в XAF через simple action (получал ИД объекта и его класс и выделенный пространственный объект и записывал в таблицу связи), похожим способом вызывал связанный пространственный объект из XAF. Пока не могу понять, как используя конфиг (где прописаны определенные классы) активировать simple action только для нужных классов. 
Может можно как то использовать TargetObjectType ? Но как ему задавать лист классов ?  

2. Необходимо из ГИС приложения иметь возможность подключиться к XAF приложению и создать в определенном классе новый объект.

Если кто поможет ссылкой или советом, буду очень признателен!
Заранее спасибо!

Roman Shelomanov

unread,
Apr 22, 2014, 8:26:53 AM4/22/14
to russian-dev...@googlegroups.com
"2. Необходимо из ГИС приложения иметь возможность подключиться к XAF приложению и создать в определенном классе новый объект."

Можно использовать .....Module.DLL из КСАФ приложения в интеграционном уровне, проинициализировав  на старте приложения  XPO DataLаyer строкой соединения

                    XpoDefault.DataLayer = XpoDefault.GetDataLayer(connectionString, DevExpress.Xpo.DB.AutoCreateOption.SchemaOnly);

И создавать объекты из указанной библиотеки.

вторник, 15 апреля 2014 г., 22:06:20 UTC+4 пользователь Дмитрий С написал:

Dennis Garavsky

unread,
Apr 22, 2014, 12:28:09 PM4/22/14
to russian-dev...@googlegroups.com
>>Может можно как то использовать TargetObjectType ? Но как ему задавать лист классов ? 
Тут можно указать тип интерфейса, который реализуют нужные классы и все будет автоматом работать.
Ну либо в вашем контроллере вручную управлять Active/Enabled у Action, что тоже хороший подход.

>>иметь возможность подключиться к XAF приложению и создать в определенном классе новый объект.
Вот это немного странная фраза...Модель данных у вас наверняка задана персистыми классами XPO, возможно у вас есть отдельная либа с ними, так вот, эту библиотеку нужно сослать в вашем не-ксаф приложении и использовать стандартный подход XPO для работы. Посмотреть можно в Getting Started доке по ХПО, например гляньте Connect to a Database Server
  из https://documentation.devexpress.com/#XPO/CustomDocument2540
Надеюсь эта информация вам поможет.


вторник, 15 апреля 2014 г., 22:06:20 UTC+4 пользователь Дмитрий С написал:
Здравствуйте!

Дмитрий С

unread,
Apr 23, 2014, 3:36:45 AM4/23/14
to russian-dev...@googlegroups.com
Спасибо!

вторник, 22 апреля 2014 г., 19:28:09 UTC+3 пользователь Dennis Garavsky написал:
>>Может можно как то использовать TargetObjectType ? Но как ему задавать лист классов ? 
Тут можно указать тип интерфейса, который реализуют нужные классы и все будет автоматом работать.
Ну либо в вашем контроллере вручную управлять Active/Enabled у Action, что тоже хороший подход.


Не хотелось бы использовать интерфейс, так как хочется иметь возможность динамически (из конфига) изменять набор классов для возможности связки. По-этому тут, как мне кажется, удобнее реализовать через Active у Action. Получается примерно так:

protected override void OnActivated()
        {
            base.OnActivated();
            // Perform various tasks depending on the target View.
            if (View.ObjectTypeInfo.Type == typeof(MyClass1))
                Frame.GetController<MyController>().MyAction1.Active.SetItemValue("myReason", false);
            else
                Frame.GetController<MyController>().MyAction1.Active.SetItemValue("myReason", true);
        }
 
>>иметь возможность подключиться к XAF приложению и создать в определенном классе новый объект.
Вот это немного странная фраза...Модель данных у вас наверняка задана персистыми классами XPO, возможно у вас есть отдельная либа с ними, так вот, эту библиотеку нужно сослать в вашем не-ксаф приложении и использовать стандартный подход XPO для работы. Посмотреть можно в Getting Started доке по ХПО, например гляньте Connect to a Database Server
  из https://documentation.devexpress.com/#XPO/CustomDocument2540
Надеюсь эта информация вам поможет.

По подключению буду пробовать, что подсказали Вы и Роман.

Vladimir Krakhotko

unread,
Dec 15, 2015, 2:50:04 AM12/15/15
to Russian DevExpress XAF
А если внешнее приложение на PHP и под линухом... ну напрямую читать БД можно... но хочется пройти стандартную ксаф авторизацию пользователя. Т.е. послать запрос (юзер+пароль) например HTML и получить ответ от ксаф. Такое возможно?


вторник, 22 апреля 2014 г., 19:28:09 UTC+3 пользователь Dennis Garavsky написал:
>>Может можно как то использовать TargetObjectType ? Но как ему задавать лист классов ? 

Stanislaw Tristan

unread,
Dec 16, 2015, 2:48:24 AM12/16/15
to Russian DevExpress XAF
Такое возможно только из приложения, написанного на .NET

вторник, 15 декабря 2015 г., 9:50:04 UTC+2 пользователь Vladimir Krakhotko написал:

Roman Shelomanov

unread,
Dec 16, 2015, 2:52:27 AM12/16/15
to Stanislaw Tristan, Russian DevExpress XAF
Можно через веб сервис, в котром будет подыматься XafApplication и делать авторизация. Ответ возвращать обратно.

16 декабря 2015 г., 10:48 пользователь Stanislaw Tristan <zesta...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу "Russian DevExpress XAF".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес russian-devexpres...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--
Devpark
Shelomanov Roman
Skype: Devpark.ru
rom...@devpark.ru

Дмитрий С

unread,
Dec 16, 2015, 3:53:45 AM12/16/15
to Russian DevExpress XAF
Да, имелось ввиду win приложение.
Если кому то поможет, мы в итоге сделали вызов через Сom через XDMessaging.

вторник, 15 апреля 2014 г., 21:06:20 UTC+3 пользователь Дмитрий С написал:
Reply all
Reply to author
Forward
0 new messages