Задача [0504]: API метод для получения списка типов документов и описания типа документов по его коду

Формулировка проблемы: для реализации метода создания документа по реестру необходим перечень полей РКК по типу документа данного реестра.

Решение: для этого необходимо реализовать следующие API методы:

Метод для получения списка типов документов

URL метода: rest/api/docflow/doctypes

Тип запроса: GET

Метод принимает следующие входные параметры:

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

Метод при условии description=short возвращает массив JSON, состоящий из следующих полей:

Метод при условии description=full возвращает массив JSON, состоящий из следующих полей:

Примеры запроса:

/rest/api/docflow/doctypes?description=full

/rest/api/docflow/doctypes?registerID=8f85e270-ebf1-11e5-835c-525400bb7fc6&recordsCount=10

Пример возвращаемого массива при условии description=full:


[
    {   
        "typeID" : "f30f6b31-4cbe-12e31f70-8030-0012a4ee",
        "code" : "internal",
        "name" : "Внутренние документы",
        "calc_method_term" : "WORKING_DAYS",
        "duration" : 5,
        "input_method_term" : "DURATION",
        "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
        "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
        "formID" : "52sf2270-4cc0-11e6-8030-001ef892a4ee",
        "form_type" : 0,
        "routes" :
            [
                "Шаблон приказов",
                "Шаблон заявлений"
            ],
        "checkDocCard" : false,
        "demand_resuser" : false,
        "demand_docfile" : false,
        "demand_regcomment" : false,
        "reg_condition" :
             [
                 "demand_signature",
                 "demand_approval"
             ],
        "fields" :
            [
                { "name" : "subject", "number" : 1  },
                { "name" : "doc_type", "number" : 2  },
                { "name" : "number", "number" : 3   },
                { "name" : "reg_date", "number" : 4  },
                { "name" : "correspondent_org", "number" : 5  },
                { "name" : "correspondent", "number" : 6  },
                { "name" : "author", "number" : 7 },
                { "name" : "reg_user", "number" : 9 },
                { "name" : "control", "number" : 10  },
                { "name" : "doc_file", "number" : 13  },
                { "name" : "base", "number" : 14  }
              ]               
    },
    {     
        "typeID" : "0db3a170-4e38-11e6-8030-001ef892a4ee",
        "code" : "incoming",
        "name" : "Входящие документы",
        "calc_method_term" : "WORKING_DAYS",
        "duration" : 5,
        "input_method_term" : "DURATION",
        "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
        "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
        "formID" : "22s12270-4cc0-11e6-8030-001ef892a4ee",
        "form_type" : 0,
        "routes" :
            [
                "Шаблон входящих писем",
                "Шаблон писем"
            ],
        "checkDocCard" : false,
        "demand_resuser" : false,
        "demand_docfile" : false,
        "demand_regcomment" : false,
        "reg_condition" :
             [
                 "demand_signature",
                 "demand_approval"
             ],
        "fields" :
            [
                { "name" : "subject", "number" : 1  },
                { "name" : "doc_type", "number" : 2  },
                { "name" : "number", "number" : 3   },
                { "name" : "reg_date", "number" : 4  },
                { "name" : "correspondent_org", "number" : 5  },
                { "name" : "correspondent", "number" : 6  },
                { "name" : "author", "number" : 7 },
                { "name" : "reg_user", "number" : 9 },
                { "name" : "control", "number" : 10  },
                { "name" : "doc_file", "number" : 13  },
                { "name" : "base", "number" : 14  }
              ]               
    },
    {
        "typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee",
        "code" : "outgoing",
        "name" : "Исходящие документы",
        "calc_method_term" : "WORKING_DAYS",
        "duration" : 5,
        "input_method_term" : "DURATION",
        "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
        "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
        "formID" : "21df270-4cc0-11e6-8030-001ef892a4ee",
        "form_type" : 0,
        "routes" :
            [
                "Шаблон заявок",
                "Шаблон заявок на закуп"
            ],
        "checkDocCard" : false,
        "demand_resuser" : false,
        "demand_docfile" : false,
        "demand_regcomment" : false,
        "reg_condition" :
             [
                 "demand_signature",
                 "demand_approval"
             ],
        "fields" :
            [
                { "name" : "subject", "number" : 1  },
                { "name" : "doc_type", "number" : 2  },
                { "name" : "number", "number" : 3   },
                { "name" : "reg_date", "number" : 4  },
                { "name" : "correspondent_org", "number" : 5  },
                { "name" : "correspondent", "number" : 6  },
                { "name" : "author", "number" : 7 },
                { "name" : "reg_user", "number" : 9 },
                { "name" : "control", "number" : 10  },
                { "name" : "doc_file", "number" : 13  },
                { "name" : "base", "number" : 14  }
              ]               
    }
]

Метод для получения описания типа документа

URL метода: rest/api/docflow/doctypes/{docTypeCode}

Тип запроса: GET

Метод принимает следующие входные параметры:

Метод возвращает полное описание типа документа по его коду, в том числе и перечень отображаемых в карточке документа полей с учетом прав пользователя, который вызывает API метод, на данный тип документа.

Метод возвращает объект JSON, состоящий из следующих полей:

Примеры запроса:

/rest/api/docflow/doctypes/outgoing

Пример возвращаемого объекта JSON при указании кода типа документа:

{
    "typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee",
    "code" : "outgoing",
    "name" : "Исходящие документы",
    "calc_method_term" : "WORKING_DAYS",
    "duration" : 5,
    "input_method_term" : "DURATION",
    "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
    "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
    "formID" : "66df2270-4cc0-11e6-8030-001ef892a4ee",
    "form_type" : 0,
    "routes" :
        [
            "Шаблон заявок",
            "Шаблон заявок на закуп"
        ],
    "checkDocCard" : false,
    "demand_resuser" : false,
    "demand_docfile" : false,
    "demand_regcomment" : false,
    "reg_condition" :
        [
            "demand_signature",
            "demand_approval"
        ],
    "fields" :
        [
            { "name" : "subject", "number" : 1  },
            { "name" : "doc_type", "number" : 2  },
            { "name" : "number", "number" : 3   },
            { "name" : "reg_date", "number" : 4  },
            { "name" : "correspondent_org", "number" : 5  },
            { "name" : "correspondent", "number" : 6  },
            { "name" : "author", "number" : 7 },
            { "name" : "reg_user", "number" : 9 },
            { "name" : "control", "number" : 10  },
            { "name" : "doc_file", "number" : 13  },
            { "name" : "base", "number" : 14  }
        ]               
}

Альтернативные потоки событий

Метод для получения списка типов документов

Альтернативный поток №1. Передан некорректный (несуществующий) параметр registerID. Сервер возвращает ошибку HTTP 400 с текстом:

{
    "errorCode" : 3,
    "errorMessage" : "Передан некорректный параметр registerID"
}

действие не выполняется.

Метод для получения описания типа документа

Альтернативный поток №1. Передан некорректный (несуществующий) параметр code. Сервер возвращает ошибку HTTP 400 с текстом:

{
    "errorCode" : 3,
    "errorMessage" : "Передан некорректный параметр code"
}

действие не выполняется.

Альтернативный поток №2. У пользователя нет прав на данный тип документа. Сервер возвращает ошибку HTTP 403 с сообщением:


{
    "errorCode" : 2,
    "errorMessage" : "У вас отсутствуют права на данный тип документа"
}

действие не выполняется.