Как заполнить данные из локальной базы данных в ОДК Опендатакит

Я работаю над модификацией ОДК Опендатакит. ODK использует XFORMS для получения входных данных и создает экземпляр XML с данными. Этот экземпляр затем загружается на сервер. То, чего я хочу добиться, - это автоматическое заполнение некоторых данных из локальной базы данных на основе входных данных из средства сбора данных. Например, если введен идентификатор, этот идентификатор проверяется из локальной базы данных, а если он существует, то некоторые предварительно определенные поля заполняются автоматически. Если идентификатор не существует, то ему выдается сообщение для проверки идентификатора.

Я получил предложение использовать виджет или другое приложение, которое проверяет запись из локальной базы данных, а затем возвращает значения полей, которые необходимо заполнить, в экземпляр XML ODK. Что я не получаю, это как передать значения в сеанс экземпляра в ODK?

1 ответ

Я не использовал ODK, но я мог бы помочь с некоторыми вещами XForms.

Передача данных XForms тесно связана с веб-сервисами RESTful XML. Из вашего описания я бы предположил, что шаблон взаимодействия будет выглядеть примерно так:

  • Создать input поле для идентификатора. Сохраните это (и любые другие данные, которые должны перейти на сервер) в главном instance вашего XForm.
  • Создать action, привязанный либо к событиям "xforms-value-Changed" или "DOMFocusOut" в этом поле ввода (xforms-Value-Changed будет срабатывать при каждом изменении, в то время как DOMFocusOut будет срабатывать только тогда, когда пользователь фактически покидает поле - какое вы используете зависит от вашего предпочтения пользователя / серверные возможности).
  • Внутри этого action, запустить submission на сервер, используя основной instance который содержит идентификатор, введенный в поле ввода.
  • Затем сервер должен ответить на этот запрос XML-документом, соответствующим схеме вашей формы, со всеми заполненными обязательными значениями.
  • Есть submission установлен в replace главный instance,

Это резюме очень высокого уровня, конечно.

Пример кода здесь:

http://en.wikibooks.org/wiki/XForms/Suggesting_Items

не совсем то , что вам нужно, но у него много одинаковых характеристик; введите текст в текстовое поле, отправьте этот текст в веб-службу, используйте ответ веб-службы для обновления модели в своей форме.

Другие вопросы по тегам