Платформа 3V/Показатель/Показатели на стороннем API: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 7 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:Показатели на стороннем API}}
+
{{DISPLAYTITLE:Показатель на согласовании}}
 
Возможности работы с показателями во многом схожи с возможностями по работе со [[Платформа_3V/Справочник/Справочники_на_стороннем_API|справочниками на стороннем API]]<br>
 
Возможности работы с показателями во многом схожи с возможностями по работе со [[Платформа_3V/Справочник/Справочники_на_стороннем_API|справочниками на стороннем API]]<br>
 
Только для работы с показателями, при получении данных, не учитываются '''orderFields''' и '''limit''', а фильтры всегда будут передаваться с условием '''Default'''.<br>
 
Только для работы с показателями, при получении данных, не учитываются '''orderFields''' и '''limit''', а фильтры всегда будут передаваться с условием '''Default'''.<br>
Строка 13: Строка 13:
 
<div class="mw-collapsible-content mw-collapsed-content">
 
<div class="mw-collapsible-content mw-collapsed-content">
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
!!! JSON WORKFLOW !!!
+
{
 +
  "template": {
 +
    "schema": {
 +
      "states": [
 +
        {
 +
          "icon": {
 +
            "type": "svg",
 +
            "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#F08513'/></svg>"
 +
          },
 +
          "id": 1,
 +
          "dataAvailabilitySettings": null,
 +
          "name": "Черновик"
 +
        },
 +
        {
 +
          "icon": {
 +
            "type": "svg",
 +
            "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#0066DD'/></svg>"
 +
          },
 +
          "id": 2,
 +
          "dataAvailabilitySettings": {
 +
            "disableEdit": true
 +
          },
 +
          "name": "На согласовании"
 +
        },
 +
        {
 +
          "icon": {
 +
            "type": "svg",
 +
            "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#05C19F'/></svg>"
 +
          },
 +
          "id": 3,
 +
          "dataAvailabilitySettings": {
 +
            "disableEdit": true
 +
          },
 +
          "name": "Согласовано"
 +
        },
 +
        {
 +
          "icon": {
 +
            "type": "svg",
 +
            "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#8053DF'/></svg>"
 +
          },
 +
          "id": 4,
 +
          "dataAvailabilitySettings": null,
 +
          "name": "На доработке"
 +
        }
 +
      ],
 +
      "steps": [
 +
        {
 +
          "fromStateId": 1,
 +
          "toStateId": 2,
 +
          "id": 1,
 +
          "name": "Отправить на согласование"
 +
        },
 +
        {
 +
          "fromStateId": 2,
 +
          "toStateId": 3,
 +
          "id": 2,
 +
          "name": "Согласовать"
 +
        },
 +
        {
 +
          "fromStateId": 2,
 +
          "toStateId": 4,
 +
          "id": 3,
 +
          "name": "Отклонить"
 +
        },
 +
        {
 +
          "fromStateId": 4,
 +
          "toStateId": 2,
 +
          "id": 4,
 +
          "name": "Вернуть на согласование"
 +
        },
 +
        {
 +
          "fromStateId": 3,
 +
          "toStateId": 1,
 +
          "id": 5,
 +
          "name": "Вернуть на Черновик"
 +
        }
 +
      ],
 +
      "startStateId": 1
 +
    },
 +
    "permissions": [
 +
      {
 +
        "stepId": 1,
 +
        "subjectId": "USERS",
 +
        "type": "Allow"
 +
      },
 +
      {
 +
        "stepId": 2,
 +
        "subjectId": "APPROVERS",
 +
        "type": "Allow"
 +
      },
 +
      {
 +
        "stepId": 3,
 +
        "subjectId": "APPROVERS",
 +
        "type": "Allow"
 +
      },
 +
      {
 +
        "stepId": 4,
 +
        "subjectId": "USERS",
 +
        "type": "Allow"
 +
      },
 +
      {
 +
        "stepId": 5,
 +
        "subjectId": "APPROVERS",
 +
        "type": "Allow"
 +
      }
 +
    ],
 +
    "parameters": {
 +
      "definitions": [
 +
        {
 +
          "id": 2,
 +
          "name": "Сотрудники",
 +
          "dictionaryId": 16,
 +
          "discriminator": "DictionaryParameterModel"
 +
        }
 +
      ],
 +
      "defaultValues": [
 +
        {
 +
          "parameterId": 2,
 +
          "value": 2
 +
        }
 +
      ]
 +
    },
 +
    "notifications": null
 +
  },
 +
  "forceWorkflowNotificationTemplate": false
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div></div>
 
</div></div>
Строка 19: Строка 144:
 
=== Создание соединения с источником ===
 
=== Создание соединения с источником ===
  
Создаем объект "Соединение с источником". Подробнее о том, как создать данный объект, написано в статье [[Платформа_3V/Соединение с источником|'''Соединение с источником''']]. Затем в JSON (???) необходимо добавить:  
+
Создаем объект "Соединение с источником". Подробнее о создании данного объекта можно узнать в статье [[Платформа_3V/Соединение с источником|'''Соединение с источником''']]. Затем в JSON необходимо добавить:  
  
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
Строка 30: Строка 155:
 
=== Создание справочника фактов ===  
 
=== Создание справочника фактов ===  
  
Создаем справочник, где будут храниться все необходимые атрибуты согласования. Подробнее о том, как создать справочник, написано в статье [[Платформа_3V/Справочник/Создание нового справочника|'''Создание нового справочника''']]. Например, вынесем в справочник "Факты_согласование" Идентификатор состояния, Статус и Комментарий:
+
Создаем справочник, где будут храниться все необходимые атрибуты согласования. Подробнее о создании справочника можно узнать в статье [[Платформа_3V/Справочник/Создание нового справочника|'''Создание нового справочника''']]. Например, вынесем в справочник "Факты_согласование" Идентификатор состояния, Статус и Комментарий:
  
!!! СКРИН СПРАВОЧНИКА !!!
+
[[Файл:Факты согласование.png|мини|слева]]<br><br><br><br><br><br>
  
 
=== Создание показателя ===
 
=== Создание показателя ===
  
Создаем показатель, в котором измерениями будут являться все справочники, указанные в согласовании в качестве параметров. В данном случае в согласовании указан один параметр со справочником "Сотрудники", он и будет являться измерением показателя. Справочником фактов будет служить справочник "Факты_согласование", созданный на предыдущем шаге. В справочнике "Факты_согласование" выбираем все элементы:
+
Создаем показатель, в котором измерениями будут являться все справочники, указанные в согласовании в качестве параметров. В данном случае в согласовании указан один параметр со справочником "Сотрудники", он и будет являться измерением показателя. Справочником фактов будет служить справочник "Факты_согласование", созданный на предыдущем шаге. В справочнике "Факты_согласование" выбираем все элементы. Для элемента "Идентификатор состояния" задаем числовой тип данных, для элементов "Статус" и "Комментарий" - текстовый:
  
!!! СКРИН КОНСТРУКТОРА ПОКАЗАТЕЛЯ !!!
+
[[Файл:Конструктор показателя согласования.png|мини|слева]]<br><br><br><br><br><br><br><br><br><br><br>
  
 
Далее донастраиваем показатель в JSON:<br>
 
Далее донастраиваем показатель в JSON:<br>
1. В поле ''name'' указываем идентификатор согласования ("215").<br>
+
1. В поле ''"virtualTable": {"name": }'' указываем идентификатор согласования ("215").<br>
2. В поле ''connectionId'' указываем идентификатор объекта "Соединение с источником", созданного на первом шаге ([[Платформа_3V/Показатели/Показатели_на_стороннем_API#Создание соединения с источником|'''Создание соединения с источником''']]) ("???").
+
2. В поле ''"virtualTable": {"connectionId": }'' указываем идентификатор объекта "Соединение с источником", созданного на первом шаге ([[Платформа_3V/Показатели/Показатели_на_стороннем_API#Создание соединения с источником|'''Создание соединения с источником''']]) ("233").<br>
3. В поле ??? в первой колонке указан справочник измерения, который является параметром в согласовании. В поле name необходимо указать идентификатор этого параметра в согласовании ("1!!!").
+
3. В поле ''"virtualTable": {"columns": []}'' находим колонку с измерением, которое является параметром в согласовании. В поле ''"virtualTable": {"columns": [{"name"}]}'' указываем идентификатор этого параметра в согласовании ("2").<br>
4. После всех измерений в поле ??? идет описание фактов (элементов справочника "Факты_согласование"). В поле name необходимо указать "???", "StateName", "???" соответственно для трех элементов справочника.
+
4. В поле ''"virtualTable": {"columns": []}'' находим колонки с фактами (элементами справочника "Факты_согласование"). В поле ''"virtualTable": {"columns": [{"name"}]}'' указываем "StateId", "StateName", "StateComment" соответственно для трех элементов справочника, также есть возможность указать "StateChangedDate".
  
!!! СКРИН JSON ПОКАЗАТЕЛЯ С ОБОЗНАЧЕНИЯМИ 1-2-3-4 !!!
+
[[Файл:JSON показателя согласования.png|мини|слева]]<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
  
 
Результат:  
 
Результат:  
  
!!! СКРИН САМОГО ПОКАЗАТЕЛЯ !!!
+
[[Файл:Показатель согласования.png|мини|слева]]

Текущая версия на 04:58, 7 июня 2021

Возможности работы с показателями во многом схожи с возможностями по работе со справочниками на стороннем API
Только для работы с показателями, при получении данных, не учитываются orderFields и limit, а фильтры всегда будут передаваться с условием Default.
Методы сохранения данных и получения структуры идентичны.
Примером данной реализации является контроллер WorkflowDataSourceView сервиса Workflow.

Настройка показателя на стороннем API на примере Workflow (Согласования)

Ниже будут описаны шаги по настройке показателя на основе объекта согласования. JSON согласования, на основе которого будет строиться показатель указан ниже.

JSON согласования
  1 {
  2   "template": {
  3     "schema": {
  4       "states": [
  5         {
  6           "icon": {
  7             "type": "svg",
  8             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#F08513'/></svg>"
  9           },
 10           "id": 1,
 11           "dataAvailabilitySettings": null,
 12           "name": "Черновик"
 13         },
 14         {
 15           "icon": {
 16             "type": "svg",
 17             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#0066DD'/></svg>"
 18           },
 19           "id": 2,
 20           "dataAvailabilitySettings": {
 21             "disableEdit": true
 22           },
 23           "name": "На согласовании"
 24         },
 25         {
 26           "icon": {
 27             "type": "svg",
 28             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#05C19F'/></svg>"
 29           },
 30           "id": 3,
 31           "dataAvailabilitySettings": {
 32             "disableEdit": true
 33           },
 34           "name": "Согласовано"
 35         },
 36         {
 37           "icon": {
 38             "type": "svg",
 39             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#8053DF'/></svg>"
 40           },
 41           "id": 4,
 42           "dataAvailabilitySettings": null,
 43           "name": "На доработке"
 44         }
 45       ],
 46       "steps": [
 47         {
 48           "fromStateId": 1,
 49           "toStateId": 2,
 50           "id": 1,
 51           "name": "Отправить на согласование"
 52         },
 53         {
 54           "fromStateId": 2,
 55           "toStateId": 3,
 56           "id": 2,
 57           "name": "Согласовать"
 58         },
 59         {
 60           "fromStateId": 2,
 61           "toStateId": 4,
 62           "id": 3,
 63           "name": "Отклонить"
 64         },
 65         {
 66           "fromStateId": 4,
 67           "toStateId": 2,
 68           "id": 4,
 69           "name": "Вернуть на согласование"
 70         },
 71         {
 72           "fromStateId": 3,
 73           "toStateId": 1,
 74           "id": 5,
 75           "name": "Вернуть на Черновик"
 76         }
 77       ],
 78       "startStateId": 1
 79     },
 80     "permissions": [
 81       {
 82         "stepId": 1,
 83         "subjectId": "USERS",
 84         "type": "Allow"
 85       },
 86       {
 87         "stepId": 2,
 88         "subjectId": "APPROVERS",
 89         "type": "Allow"
 90       },
 91       {
 92         "stepId": 3,
 93         "subjectId": "APPROVERS",
 94         "type": "Allow"
 95       },
 96       {
 97         "stepId": 4,
 98         "subjectId": "USERS",
 99         "type": "Allow"
100       },
101       {
102         "stepId": 5,
103         "subjectId": "APPROVERS",
104         "type": "Allow"
105       }
106     ],
107     "parameters": {
108       "definitions": [
109         {
110           "id": 2,
111           "name": "Сотрудники",
112           "dictionaryId": 16,
113           "discriminator": "DictionaryParameterModel"
114         }
115       ],
116       "defaultValues": [
117         {
118           "parameterId": 2,
119           "value": 2
120         }
121       ]
122     },
123     "notifications": null
124   },
125   "forceWorkflowNotificationTemplate": false
126 }

Создание соединения с источником

Создаем объект "Соединение с источником". Подробнее о создании данного объекта можно узнать в статье Соединение с источником. Затем в JSON необходимо добавить:

1 {
2   "dbType": "Web",
3   "connectionString": "http://workflow/api/WorkflowDataSourceView/"
4 }

Создание справочника фактов

Создаем справочник, где будут храниться все необходимые атрибуты согласования. Подробнее о создании справочника можно узнать в статье Создание нового справочника. Например, вынесем в справочник "Факты_согласование" Идентификатор состояния, Статус и Комментарий:

Факты согласование.png







Создание показателя

Создаем показатель, в котором измерениями будут являться все справочники, указанные в согласовании в качестве параметров. В данном случае в согласовании указан один параметр со справочником "Сотрудники", он и будет являться измерением показателя. Справочником фактов будет служить справочник "Факты_согласование", созданный на предыдущем шаге. В справочнике "Факты_согласование" выбираем все элементы. Для элемента "Идентификатор состояния" задаем числовой тип данных, для элементов "Статус" и "Комментарий" - текстовый:

Конструктор показателя согласования.png












Далее донастраиваем показатель в JSON:
1. В поле "virtualTable": {"name": } указываем идентификатор согласования ("215").
2. В поле "virtualTable": {"connectionId": } указываем идентификатор объекта "Соединение с источником", созданного на первом шаге (Создание соединения с источником) ("233").
3. В поле "virtualTable": {"columns": []} находим колонку с измерением, которое является параметром в согласовании. В поле "virtualTable": {"columns": [{"name"}]} указываем идентификатор этого параметра в согласовании ("2").
4. В поле "virtualTable": {"columns": []} находим колонки с фактами (элементами справочника "Факты_согласование"). В поле "virtualTable": {"columns": [{"name"}]} указываем "StateId", "StateName", "StateComment" соответственно для трех элементов справочника, также есть возможность указать "StateChangedDate".

JSON показателя согласования.png






















Результат:

Показатель согласования.png