6.8 Регистрация цифрового документа во внутреннем модуле координации «Портала ГосЭДО»

Через запрос к API «Портала ГосЭДО» можно выполнить регистрацию цифрового документа на «Портале ГосЭДО» с помощью команды saveDigitalDocument. Это позволит занести в базу данных «Портала ГосЭДО» сведения о новом цифровом документе в организации.

Команда: saveDigitalDocument.

Действие: регистрирует цифровой документ во внутреннем модуле координации «Портала ГосЭДО».

Параметры:

  • xml (файл) – цифровой документ в формате XML (digital.xml);
  • session_id (строка от 16 символов, опционально) – ID сессии (песочницы), в рамках которой организована изоляция данных. ID сессии фиксируется за цифровым документом во внутреннем модуле координации «Портала ГосЭДО». ID сессии позволяет изолировать работу пользователей с документами только внутри заданного ID. Если другой пользователь начнет работу с другим ID сессии, ему будут видны только документы и процессы с его ID сессии. Это позволяет изолировать данные при использовании одного экземпляра «Портала ГоЭДО» для большого количества организаций, где требуется обеспечить разграничение видимости документов для каждой организации или в других случаях, где требуется изоляция данных.

Возвращаемый результат:

Возвращает данные в формате json, с результатом регистрации в параметре success (булево, true/false).

Пример реализации в JavaScript:

<!--- REST API Портала ГосЭДО: сервисы для цифровых документов -->
<!--- Для вызова используется REST API http(s)://server-url/#/SERVICE-->
<script>
    async function fetchAdapterService(myAction, myKey, myValue, saveAsFile, mySession = 'NONE') {
        // Пример адреса для обращения к сервисам, если Портал ГосЭДО доступен по IP 10.77.142.21:84
        RESTAPIURL = 'http://10.77.142.21:84/api/service';

        const formData = new FormData();
        formData.append('action', myAction);
        formData.append(myKey, myValue);

        if (mySession != 'NONE') formData.append('session_id', mySession);

        var object = {};
        formData.forEach(function(value, key) {
            object[key] = value;
        });

        const response = await fetch(RESTAPIURL, {
            method: 'POST',
            body: formData })
        .catch((error) = >{});

        if (response.status == 200) {
            //Присвоение в переменную file ответа
            let file = await response.blob();
            let link = document.createElement("a");
            link.href = window.URL.createObjectURL(file);
            link.download = saveAsFile;
            link.click();
        }
    }
</script>
<!--REST API Портала ГосЭДО: регистрация цифрового документа из файла 
XML во внутреннем модуле Портала ГосЭДО-->
<script>
    // функция, которая выполняется при нажатии кнопки «Зарегистрировать документ XML на Портале ГосЭДО»
    async function processDocument() {
        myValue = document.querySelector('#file').files[0];
        //передача параметров в функцию fetchAdapterService:
        //Команда: saveDigitalDocument
        //Параметр xml: xml
        //Значение параметра: myValue (файл)
        //Сохранить результат как response.json
        //Параметр: session_id
        //Значение параметра session_id: идентификатор сессии из поля ввода #sessionId

        fetchAdapterService('saveDigitalDocument', 'xml', myValue, 'response.json', document.querySelector('#sessionId').value);
    }
</script>
<!-- поле для ввода идентификатора сессии -->
<input id="sessionId" type="text" placeholder="session_id (от 15 знаков)"/>
<!--поле выбора файла, нужно выбрать digital.xml-->
<input id="file" type="file">
<!-- кнопка для запуска процесса регистрации цифрового документа на Портале ГосЭДО-->
<button onclick="processDocument()">Зарегистрировать документ XML на Портале ГосЭДО</button>

С выполнением демонстрационного примера по описанной функции можно ознакомиться в разделе 4.8 Демонстрация регистрации цифрового документа XML во внутреннем модуле координации.

Последнее изменение: Wednesday, 26 June 2024, 14:13