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

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

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

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

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

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

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

Плагин WorkFlow в dll на C++

Автор userg61, 20.09.16, 09:33:14

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

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

userg61

Здравствуйте.
Подскажите, пожалуйста, как обработать параметры передаваемые в функцию написанную  на
C++(Visual Studio) из автоматической операции.

Вызов выполняется таким образом:
    varParam := VarArrayCreate([0, 1], $000C);   
    varParam[0] := 'Параметр 1';
    varParam[1] := 'Параметр 2';   

    stResult:=ExecPluginFunction('..\Workflow\PlugIns\MyPlugin.dll','TestPluginWF', varParam);
   
  Без параметров функция выглядит так (нормально работает):
_declspec(dllexport) void __stdcall TestPluginWF(IPluginCall * IPC)
    {
   ......
    };

На Delphi сигнатура функции имеет такой вид (из справки LWFScript_API.chm):
  TWFPgi = function (WFBL: Variant; pPDMVersion: Pointer; vrUserData: array of OleVariant): OleVariant; stdcall; export;

   где:
      WFBL – ссылка на интерфейс IWFBusinessLogic;   
      pPDMVersion – информация о бизнес-процессе и его объекте (представляет собой ссылку на структуру типа TPDMVersionData).
      vrUserData – массив пользовательских параметров (служит для  передачи необходимых данных из автооперации в плагин).

Как описать функцию на C++, что бы обработать параметры и вернуть результат.



Chaa

Цитата: userg61 от 20.09.16, 09:33:14
Как описать функцию на C++, что бы обработать параметры и вернуть результат.
Примерно так:

struct PDMVersionData {
    int  inIDRoute;
    char stAppServName[255];
    char stBaseName[255];
    int  inID;
    char stProduct[255];
    char stType[255];
    char stVersion[255];
    char stState[255];
    char inAccessLevel;
    char inLockLevel;
    char boDocument;
    char boRevision;
};

__declspec(dllexport) VARIANT __stdcall TestPluginWF(VARIANT wf,
    PDMVersionData* pVersion, VARIANT* pUserData, int nUserDataCount) {
}

И еще такой вариант попробуйте:

__declspec(dllexport) VARIANT __stdcall TestPluginWF(VARIANT wf,
    PDMVersionData* pVersion, VARIANT UserData) {
}

+ Благодарностей: 2

userg61

Огромное спасибо. Всё работает.

Chaa

А на каком из двух вариантов остановились?

userg61

Остановился на первом:

__declspec(dllexport) VARIANT __stdcall TestPluginWF(VARIANT wf,
    PDMVersionData* pVersion, VARIANT* pUserData, int nUserDataCount) {
}

  Второй, тоже работает.

once

А как сделать тоже самое, только на C#?

Chaa


once

Про это я вкурсе, мне нужно описание функции на шарпе