Please, pay attention that now you are in public part of FAQ-Area. Register and find more FAQ-articles in Personal Cabinet.

FAQ#100013: Гиперссылки на объекты БД ЛОЦМАН:PLM

Keywords: ссылка структура lnd lno lnf Created: 2007-11-06 09:12:15
Linked Articles: Changed: 2024-09-03 09:13:10

Problem:

В ЛОЦМАН Клиент есть возможность создавать ссылки, какова структура ссылки, как расшифровать строку, которая формируется при копировании ссылки на объект?

Solution:

Формат гиперссылок

Формат всех гиперссылок ЛОЦМАН одинаков, любая гиперссылка содержит только Action и params.
Формат params может быть различным, в зависимости от Action.

Action может принимать значения:

  • Navigate (переход к объекту)

  • Open (открыть в новом окне)

  • OpenProcess (открыть бизнес-процесс)

  • OpenWFTask (открыть задание Workflow)

  • OpenTask (открыть задание СПиУПП)

params - ссылка на объект, закодированная в Base64

пример ссылки на объект:

ask:Loodsman.URL?Action=Navigate,params=MHxwZ2RlbW8yMzF8MHw3NA==

Блок params в ссылках на объекты может иметь следующий формат:

Base64(DBName)|1|CheckoutID|Base62(ObjectID1),Base62(ObjectID2)..Base62(ObjectIDn)

здесь

  • Base64(DBName) - Имя базы данных, зашифрованное в base64

  • 1- Код типа объекта, на который ссылается гиперссылка, от него зависит как будет интерпретироваться блок идентификаторов в гиперссылке (1 - объекты, 2 - связи (не рекомендуется применять в гиперссылках), 5 - задание СППиУП, 6 - бизнес-процесс, 9 - стадия WorkFlow)

  • CheckoutID - идентификатор рабочего проекта, в контексте которого должны быть открыты объекты, либо 0, если объекты открываются в режиме просмотра базы данных (рекомендуем избегать формирования гиперссылок открывающих объекты в работе, так как такие гиперссылки будут открываться корректно только у владельца рабочего проекта)

  • Base62(ObjectID1),Base62(ObjectID2)..Base62(ObjectIDn)  - Идентификаторы объектов, Эти идентификаторы зашифрованы в base62 (для сокращения длины гиперссылки)

Пример ссылки на бизнес-процесс:
ask:Loodsman.URL?Action=OpenProcess,params=cGdkZW1vMjMx|6|34

Блок params в ссылках на бизнес-процессы, задания WF может иметь следующий формат:

Base64(DBName)|6|Base62(BpID1),Base62(BpID2)..Base62(BpIDn)

здесь
 

Base64(DBName) - Имя базы данных, зашифрованное в base64
6 - Код типа объекта, на который ссылается гиперссылка (для БП - всегда 6)

  • Base62(BpID1),Base62(BpID2)..Base62(BpIDn)  - Идентификаторы бизнес-процессов, которые необходимо открыть. Эти идентификаторы зашифрованы в base62 (для сокращения длины гиперссылки)

пример ссылки на задание СПиУПП:
ask:Loodsman.URL?Action=OpenTask,params=cGdkZW1vMjMx|5|0|2N

здесь
 

  • cGdkZW1vMjMx - Base64(DBName) - Имя базы данных, зашифрованное в base64
  • 5 - код заданий СППиУП, 0 - зарезервировано, 2N - закодированный в base62 идентификатор задания. Если заданий несколько, то они также как и в случае с БП будут идти через запятую

Base62

Процесс преобразования десятичного числа в base62 похож на преобразование в шестнадцатеричный формат. Только основание будет не 16, а 62.
Для представления чисел в base62 ЛОЦМАН использует следующую последовательность символов '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.  Таким образом числа от 0 до 9 останутся сами собой при преобразовании, а вот 10 будет преобразовано в 'a', 35 - в 'z', 61 - в 'Z', 62 - '10' и так далее.

Loodsman.URL

Если гиперссылку необходимо открыть из приложения, то вместо открытия гиперссылки средствами ask.dll, можно воспользоваться COM объектом Loodsman.URL напрямую. Основной его интерфейс ICommand содержит метод Execute:
HRESULT _stdcall Execute([in] long hWnd, [in] long hInstance, [in] BSTR stCmdLine, [in] long dummy);
Гиперссылку нужно передавать в параметр stCmdLine, но уже без "ask:Loodsman.URL?"

Пример:
    
url := CreateOleObject('Loodsman.URL') as ICommand;
    url.Execute(0, 0, 'Action=Open,params=U1QzRDIwMTdSMlRFU1Q=|1|0|3iy,3iz,3ow,3ox,3oy', 0);