• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

WorkFlow API

Автор l2qwe, 11.03.11, 15:18:58

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

l2qwe

Добрый день.

Для ЛОЦМАН API Chaa выкладывал пример плагина http://forum.ascon.ru/index.php/topic,15373.msg100832.html#msg100832 где есть модуль Loodsman_TLB.pas
Есть ли подобный для WorkFlow?
PS Лоцман 10, Embarcadero® Delphi® 2010

Chaa

Если мне не изменяет память, вызывать методы WorkFlow можно через RunMethod Лоцмана (IPluginCall.RunMethod или IPluginCall.GetDataSet), начиная с версии 2011. Для методов WorkFlow при этом указывается префикс 'WF'.
В младших версиях нужно использовать TDCOMConnection/TSocketConnection/TWebConnection и обертку для TClientDataSet чтобы создать отдельное подключение к серверу WorkFlow.
YorikER делал обертку TClientDataSet http://forum.ascon.ru/index.php/topic,15373.msg89669.html#msg89669

l2qwe

Спасибо огромное.
В Лоцмане 10 так же получается пользоваться RunMethod Лоцмана (IPluginCall.RunMethod или IPluginCall.GetDataSet) указывается префикс 'WF' для вызываемых методов.

l2qwe

Или не все методы вызываются через IPluginCall с префикс 'WF' или я что то не верно делаю.
inIDProcess:=FPluginCall.RunMethod('WFCreateNewProcessBy',VarArrayOf([
        FPluginCall.DBName, // имя базы данных PDM
        idNewObj, // идентификатор объекта PDM
        'Проверка РЭК '+REKNew.Text, // имя рабочего бизнес-процесса
        inIDProcess// идентификатор типового бизнес-процесса
      ]));
LDataSet:=FPluginCall.GetDataSet('WFGetFirstItems',VarArrayOf([inIDProcess]));

WFCreateNewProcessBy отрабатывает отлично и БП создаётся, но вот на WFGetFirstItems говорит что Вызов неизвестного метода

Chaa

Через RunMethod вызываются не все методы, но в версии Комплекс 2011 у меня WFGetFirstItems работал.
В моей версии Лоцмана из 176 методов Workflow через RunMethod вызываются 83.

l2qwe

Сделал через TDCOMConnection, в таком духе.
ЦитироватьDCOM := TDCOMConnection.Create(nil);
    DCOM.ComputerName  := stServer;
    DCOM.ServerGUID := '{3D7F4F8F-F8A2-4AC5-B9E7-48CBC7CD2749}';
    DCOM.Open;
    LWFCon := DCOM.GetServer as IWFSystem;
    LDataSet := CreateComObject(CLASS_DataSet) as IDataSet;
    LWFCon.ConnectWorkFlowOnDBEx(FpluginCall.DBName,stServer,'','', inErrCode, stErrMess);
    LDataSet.DATA := (LWFCon.GetTypicalProcessList(1,inErrCode, stErrMess));
Работает отлично, единственность не знаю корректно ли LDataSet := CreateComObject(CLASS_DataSet) as IDataSet или лучше использовать TClientDataSet?

Chaa

Цитата: l2qwe от 29.03.11, 15:20:01
Корректно ли LDataSet := CreateComObject(CLASS_DataSet) as IDataSet или лучше использовать TClientDataSet?
Если в плагине внутри Лоцмана - то нормально. Если будет отдельное приложение, то
получится тяжеловесно: будет создаваться отдельный процесс COM-сервера с помощью запуска Loodsman.exe и в нем будет работать объект DataSet.

mDmitriy

Цитата: l2qwe от 29.03.11, 15:20:01
    LWFCon := DCOM.GetServer as IWFSystem;
Откуда берется описание типа IWFSystem?

Chaa

Интерфейс IWFSystem описан в библиотеке типов СП Workflow. Библиотека типов находится в файле LoodsmanAppServerWF.dll.
Заголовочный файл проще всего получить, поставив на компьютер сервер приложений и выполнив Component -> Import Component -> Type Library и выбрать Loodsman Workflow Server Library.
+ Благодарностей: 1

mDmitriy

Спасибо!

Я просто зарегистрировал у себя LoodsmanAppServerWF.dll, а потом сделал Import Component.