work flow

Автор gsdim, 02.08.12, 14:12:25

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

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

gsdim

Здравствуйте.
Кто пользуется work flow? есть такие? нужен один важный совет. Как исправить ошибку 70002, нет доступа к базе или отсутствует пользователь в базе.
Ползователь в базе есть, к базе лоцман соединяется нормально, а  к базе WF не хочет. такая проблема только у 1го пользователя, у других все хорошо
кто подскажет как быть?

rain

ну навскидку, может быть пользователь не прицеплен в конфигураторе WF к определенной группе?

danver

Коллеги, здравствуйте!
Разбираюсь со скриптами автоматических операций WorkFlow, и не могу сообразить, как получить полный состав объекта PDMObject, включая разузловку всех его входящих сборок. Метод GetCompose даёт только первый уровень. Еще не понятно, можно ли использовать методы сервера приложений Лоцмана. Подскажите пожалуйста, кто знает, как решить вопросы.

Chaa

Цитата: danver от 26.09.12, 12:58:05
Как получить полный состав объекта PDMObject, включая разузловку всех его входящих сборок

Можно вызывать PDMObject.GetCompose рекурсивно.

Цитата: danver от 26.09.12, 12:58:05
Еще не понятно, можно ли использовать методы сервера приложений Лоцмана.

Можно написать свою DLL, см. функции ExecDLLFunction и ExecSPDLLFunction, и делать там все что хочется, в том числе использовать методы СП Лоцмана.

danver

Цитата: Chaa от 26.09.12, 18:37:51
Можно вызывать PDMObject.GetCompose рекурсивно.


а есть пример кода рекурсивного вызова функции в редакторе скрипта WorkFlow? Уж больно функционал не богатый.

Chaa

Цитата: danver от 27.09.12, 06:55:50
а есть пример кода рекурсивного вызова функции в редакторе скрипта WorkFlow?

Примерно так:
program Main;

    procedure ProcessTree(AParent: TPDMObject);
    var
        Linked: TPDMObjectComposition;
        i: Integer;
        Child: TPDMObject;
    begin
        Linked := AParent.GetCompose('Состоит из...', False);
        for i := 1 to Linked.inPDMObjectCount do
        begin
            Child := Linked.GetPDMObject(i);
            // TODO: Использование Child
            ProcessTree(Child);
            Child.Free;
        end;
        Linked.Free;
    end;

begin               
    ProcessTree(PDMObject);
    SetResultOperation(False);
end;

danver

Спасибо! Действительно всё просто.