Active Collab 5 Webhooks / Ведение "метрических" данных

У меня есть приложение, над которым я работаю, которое в основном берет данные из Active Collab и создает отчеты / графики из данных. Сам по себе API недостаточно для получения надлежащих данных для каждого запроса, поэтому я прибегнул к сведению данных в отдельный набор данных, который можно запрашивать более эффективно.

Поэтому, чтобы избежать необходимости постоянно запрашивать весь API, я решил использовать веб-зацепки для преобразования соответствующих данных и снижения необходимости повторной синхронизации данных.

Однако я заметил, что не все события отправляются, особенно следующие.

TaskListUpdated
MemberUpdated
TimeRecordUpdated
ProjectUpdated

Вероятно, есть еще что-то, но это главные из тех, что я заметил до сих пор,

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

Так я что-то здесь упускаю? Есть ли способ надежно увидеть эти события?

РЕДАКТИРОВАТЬ:Чтобы избежать длинного комментария к Илье, я помещаю основную часть здесь.

Помимо веб-хопов, какую информацию вам нужно вытащить? API, который обеспечивает отчеты по отслеживанию времени, может выполнять все виды межпроектной фильтрации, поэтому ваш подход к ведению отдельной базы данных может оказаться излишним.

В основном мы делаем многоуровневый многоуровневый отчет. Его можно отсортировать / сгруппировать любым возможным способом, который вы захотите посмотреть.

http://www.appsmagnet.com/product/time-reports-plus/

Это самое близкое к тому, что мы пытаемся сделать, когда мы использовали Active Collab 4, это делало свою работу, но даже с этим нам приходилось консолидировать это в наших собственных таблицах.

Так что идея заключается в том, чтобы лучше интегрировать наши данные Active Collab в наш собственный рабочий процесс.

Таким образом, основные данные, которые мы ищем в этом случае

Job Types
Projects
Task Lists
Tasks
Time Records
Categories
Members / Clients
Companies

Эти элементы могут использоваться не только в наших отчетах, но и во многих других аспектах нашей компании. Для нас Active Collab - это точка правды, поэтому мы хотим, чтобы данные были быстро доступны и полностью доступны для запросов.

Поэтому я настроил систему синхронизации, которая первоначально собирает все данные, которые он может, из Active Collab, а затем использует смесь cron и webhooks, чтобы поддерживать их в актуальном состоянии.

Задания Cron работают хорошо для всех аспектов, которые не имеют "подпунктов" (проекты / задачи / списки задач / записи времени). Таким образом, те, кому я должен положиться на веб-крючок, поскольку для их синхронизации требуется много времени, чтобы иметь возможность обновлять его в реальном времени.

Для webhook я заметил, что выше не пронести. Записи времени Я нашел способ обойти это, перечисленный в моем ответе, и член можно сделать через cron. Тем не менее, список задач и обновление проекта являются единственными проблемами. Проект довольно важен, так как бюджет может измениться, и это будет использоваться в отчетах, списки задач имеют даты начала / окончания, которые также могут быть использованы. Поскольку постоянно просматривать каждый список проектов / задач, чтобы увидеть, есть ли изменения, на самом деле не очень хорошая идея, я ищу способ надежно видеть обновления для них.

Я основал эту систему на https://developers.activecollab.com/api-documentation/ но я знаю, что есть по крайней мере несколько конечных точек, которые не перечислены.

Межпроектная фильтрация записей времени с использованием Active Collab 5 API

Этот вопрос на самом деле от другого разработчика в той же системе (а также показывает TrackingFilter отчет не указан в документации). Из-за проблем с поддержанием точного набора данных нам пришлось адаптировать его. Я на самом деле замечаю, что вы (Илья) отвечаете и действительно рекомендовали перейти на этот стиль системы.

1 ответ

Это не полный ответ, а способ решить проблему с TimeRecordUpdated не проходит через веб-крючок.

Существует еще одна конечная точка API для /whats-new Эта конечная точка описывает изменения за последний день или около того и имеет категорию под названием TrackingObjectUpdatedActivityLog это относится к обновленной записи времени.

Поэтому я настроил задание cron, чтобы проверить это достаточно последовательно и вручную выдвинул TimeRecordUpdated событие через мою систему, чтобы сохранить его согласованным.

За MemberUpdated поскольку данные для обновляемого члена вряд ли сильно повлияют, наличие ежедневного cron для проверки пользователей кажется достаточно хорошим.

ProjectUpdated технически можно считать то же самое, но с отсутствием TaskListUpdated это приводит ко многим вызовам API для синхронизации данных. Я пока не нашел решения для этого, к сожалению.

Другие вопросы по тегам