WorkFlow Plugin

Автор danver, 21.12.12, 07:46:10

« предыдущая - следующая »

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

danver

Коллеги, здравствуйте!
Пробую написать библиотеку для WorkFlow. В соответствии с мануалом функция библиотеки выглядит у меня так:

function Sample_Dll_Function(MainHandle : THandle; vaDbListData: OleVariant; pPDMVersion : Pointer): String; stdcall; export;
begin
    OleCheck(CoInitialize(nil));
    Application.Handle := MainHandle;
    PDMVersion := pPDMVersion;
    ShowMessage('Текстовое сообщение');
    Result := StrPas(PDMVersion.stProduct);
    Application.Handle := 0;   
end;


Из автоматической операции WorkFlow вызываю эту функцию соответственно так:

Program Main;
begin
  stResult := ExecDllFunction('Step_1.dll','Sample_Dll_Function');
  SetResultOperation(true);
end;


При выполнении автоматической операции в WorkFlow окно сообщения вижу, при его закрытии WorkFlow подвисает, снимается только тремя кнопками. Бизнес-процесс проходит дальше. Что не так с моей библиотекой? Чего не хватает?

Chaa

Функция возвращает OleVariant.
function Sample_Dll_Function(MainHandle: THandle; vaDbListData: OleVariant; pPDMVersion: Pointer): OleVariant; stdcall;

И если используете Delphi 2009 или более позднюю, то делать Application.Handle := MainHandle в общем случае нельзя.

danver

Лоцман у нас версии 8.5, программный код использую из рекомендованного мануалом. Отключение строки "Application.Handle := MainHandle" ситуации не меняет. Хотелось бы как-то узнать, это ошибка моей версии WorkFlow, или с библиотекой что-то не так? Есть ли смысл пытаться запускать WorkFlow, или искать какие-то другие способы организации диспетчирования?

Chaa

В 8.5 SP2 у меня работали библиотеки для WorkFlow, как серверные, так и клиентские.
Возвращаемое значение функции исправили?

danver

Ваш совет как всегда оказался точным и по делу. Всё заработало. Спасибо!