Пользовательский интерфейс рабочего процесса и дизайн и технология - PullRequest
0 голосов
/ 02 октября 2019

Требования: У меня есть требование разработать рабочий поток для управления движением тестового робота. Доступны API для управления роботом, которые мне нужно вызывать на основе структуры, определенной в рабочем процессе. Рабочий процесс определяет движения, которые должны выполняться последовательно.

Пример рабочего потока: [Пуск] -> [Переместить в координаты X, Y, Z] -> [Переместить в координаты X, Y, Z] -> [Переместить на расстояние X вниз] -> [Переместить на расстояние X] -> [Конец]

Каждый блок в вышеуказанном рабочем процессе будет иметь «действие» (Перемещение) и «значения» (Координаты), которые должны быть установлены для каждого действия, и серверная часть получит эти значения, выполнит некоторые вычисления и вызовет API для перемещенияробот с расчетным значением.

Дизайн: На данный момент я являюсь Java-разработчиком, готовым попробовать Python. Мне нужно было несколько идей, связанных с тем, какую технологию использовать для Frontend, а также Backend, и примерное предложение по дизайну. ИЛИ ЖЕЕсть ли какой-либо открытый исходный код, который уже делает нечто подобное, что я могу либо сослаться или использовать. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 октября 2019

Для проектирования потока я бы создал файл шаблона, который может поддерживать стандартную структуру, которую можно интерпретировать (XML, JSON и т. Д.), Которая может быть отправлена ​​на серверную часть пользовательским интерфейсом, на основе которого запускается триггер. для START должно иметь место, с шагами MOVE и в последнем END, очерченными в той же структуре.

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

Так, например, пример запроса JSON будет выглядеть следующим образом:

{
  "automated_request": {
    "start": true,
    "steps": [
      "step": {
        "name": "First Step"
        "action": "Move",
        "parameters":[
          "coordinates":{"x": 10, "y": 20}
        ]
      }
      "step": {
        "name": "Second Step"
        "action": "Move",
        "parameters":[
          "coordinates":{"x": 10, "y": 30}
        ]
      }
    ]
    "end": true
  }
}

или вы даже можете настроить объект step так, чтобы он охватывал еще более сложную информацию.

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

...