====== Формат описания грид-заданий на языке JSON ====== ===== Атрибуты описания заданий ===== Описание задания не может иметь атрибутов, отличных от перечисленных ниже: * version, число - версия используемой схемы описания задания. Версия данной схемы 2. * description, строка, опциональный параметр - описание задания в произвольной форме, для понимания человеком. * default_storage_base, строка, опциональный параметр - относительные пути, встречающиеся во вложенных описаниях используют данный URI в качестве базы. * tasks, список объектов, не менее 1 элемента - задачи, из которых состоит задание. Каждый элемент списка является объектом со следующими свойствами: * id, строка, разрешается использовать только символы [a-zA-Z0-9_] - идентификатор задачи. Используется при обращении к задачам задания, а так же при указании связей задач. * description, строка, опциональный параметр - описание задачи в произвольной форме, для понимания человеком. * definition, объект, опциональный параметр - описание задачи (см. [[dcomp:fcp:rest:taskschema|Формат описания грид-задач на языке JSON]]). Если данный параметр отсутствует, это может означать, что описание задачи будет загружено на сервер отдельно (например, из внешнего файла). * children, список строк, опциональный параметр - список идентификаторов задач (id), дочерних для данной задачи. * filename, строка, опциональный параметр - имя файла, содержащего описание задачи. При наличии одновременно атрибутов filename и definition, предпочтение отдается описанию задачи из файла, указанного в данном отрибуте. * meta, объект, опциональный - данный атрибут предназначен для хранения любых пользовательских параметров экземпляра задачи, и может иметь любое содержимое. * requirements, список объектов, опциональный параметр - объект требований к ресурсам (согласно схеме описания требований к ресурсам). ===== JSON Schema для описания заданий ===== JSON Schema описания заданий: { "description": "Задание", "type": "object", "properties": { "created": { "type": "string", "format": "date-time" }, "modified": { "type": "string", "format": "date-time", "optional": true }, "expires": { "type": "string", "format": "date-time", "description": "Дата, когда данная задача будет удалена с сервера." }, "server_time": { "type": "string", "format": "date-time", "description": "Текущие дата и время на сервере" }, "server_policy_uri": { "type": "string", "format": "uri", "description": "URI ресурса с описанием политики работы сервера" }, "owner": { "type": "string", "description": "DN пользователя, создавшего задание", "maxLength": 256 }, "vo": { "type": "string", "description": "Виртуальная организация задания", "maxLength": 64 }, "state": { "type": "array", "description": "Состояние задания, со всей историей его изменений", "items": { "type": "object", "description": "Запись о состоянии задания.", "properties": { "s": { "type": "string", "description": "состояние", "enum": [ "new", "pending", "running", "paused", "finished", "aborted"] }, "ts": { "type": "string", "format": "date-time", "description": "время, когда наступило данное состояние" } }, "additionalProperties": true } }, "operation": { "type": "array", "description": "операции, которые должны быть выполнены с данным заданием", "items": { "type": "object", "description": "Операция с заданием", "properties": { "op": { "type": "string", "description": "операция", "enum": [ "start", "pause", "abort" ] }, "id": { "type": "string", "description": "id операции", "maxLength": 36 }, "created": { "type": "string", "format": "date-time", "description": "время, когда была запрошена данная операция" }, "completed": { "type": "string", "format": "date-time", "description": "время, когда была выполнена данная операция", "optional": true, "requires": "success" }, "success": { "type": "boolean", "description": "было ли выполнение операции успешным", "optional": true, "requires": "completed" }, "result": { "type": "object", "description": "результат завершения операции", "optional": true, "requires": "completed" } }, "additionalProperties": true } }, "definition": { "type": "string", "description": "описание задания на языке описания заданий", "format": "application/octet-stream" }, "tasks": { "type": "array", "description": "список URI задач задания", "items": { "type": "string", "format": "uri" } } }, "additionalProperties": false }