The Deep-Link функция доступна на выпуске/6.0.x отрасли и как это работает:
Вы можете передать параметр URL "DL" в сервлет Scout. Параметр «dl» содержит строку в этом формате: [имя обработчика] - [данные]. Пример: Форма -123456.
Для каждого шаблона глубокой связи, который вы хотите обработать в своем приложении Scout, вам необходимо зарегистрировать обработчик глубокой привязки, который реализует IDeepLinkHandler и обычно наследуется от AbstractDeepLinkHandler. В конструкторе вы указываете регулярное выражение, которое соответствует вашему шаблону глубокой привязки, и извлекает данные в виде группы регулярных выражений. В методе handleImpl вы реализуете все, что должно делать глубокая ссылка в модели Scout. Обработчик глубокой привязки будет автоматически зарегистрирован как (Scout) Bean.
Вот пример код, чтобы открыть форму Scout с глубокой ссылкой:
public class FormDeepLinkHandler extends AbstractDeepLinkHandler {
private static final String HANDLER_NAME = "form";
public FormDeepLinkHandler() {
super(defaultPattern(HANDLER_NAME, "\\d+"));
}
@Override
public void handleImpl(Matcher matcher) throws DeepLinkException {
String formId = matcher.group(1);
IForm form = getFormById(formId);
form.start();
}
private IForm getFormById(String formId) throws DeepLinkException {
if ("300".equals(formId)) {
return new ScoutInfoForm();
}
// throw a DeepLinkException when resource requested by deep-link does not exist
throw new DeepLinkException("Form not found");
}
public BrowserHistoryEntry createBrowserHistoryEntry(IForm form) {
return DeepLinkUriBuilder.createRelative()
.parameterInfo(form.getTitle())
.parameterPath(toDeepLinkPath(getFormId(form)))
.createBrowserHistoryEntry();
}
private String getFormId(IForm form) {
// TODO: return an ID for different forms, or you could use form.getFormId();
return "300";
}
@Override
public String getName() {
return HANDLER_NAME;
}
}
Дополнительный createBrowserHistoryEntry (IForm) создает запись, которая будет использоваться в истории браузера, что означает, что он будет изменять URL в адресной строке вашего браузера. Он также позволяет использовать кнопки истории назад/вперед в приложении Scout. Для этого вы могли бы сделать это в форме:
@Override
protected void execInitForm() {
BrowserHistoryEntry entry = BEANS.get(FormDeepLinkHandler.class).createBrowserHistoryEntry(this);
ClientSessionProvider.currentSession().getDesktop().setBrowserHistoryEntry(entry);
}
С, что вы можете, наконец, начать свою форму, открыв URL:
http://foo.com/?dl=form-300&i=Title-of-the-form
Примечание: параметр «я» не является обязательным. Вы можете использовать его, чтобы сделать URL более понятным для людей или как подсказку для поисковых сканеров.