Руководство программиста Collaboration


НАЧАЛО >> Collaboration >> Руководство программиста Collaboration📄 Скачать в DOCX


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

Минимальный пример:

$thread = UseModule('Collaboration')->OpenThread(array(
    'title' => 'Обсуждение задачи',
    'visibility' => 'internal',
    'object' => array(
        'module' => 'Tasks',
        'dbn' => 'I128F',
        'recordType' => 'TASK',
        'recordKey' => 'TASK-1'
    )
), array('idempotencyKey' => 'task-thread-TASK-1'));

UseModule('Collaboration')->AddMessage($thread['thread']['threadKey'], array(
    'text' => 'Комментарий исполнителя',
    'visibility' => 'internal'
), array('idempotencyKey' => 'message-unique-key'));

Отдельные действия над сообщением выполняются через ChangeMessageVisibility, AddMention, AddReference, AddReaction и LinkAttachment. Все эти методы возвращают массив с ok, пишут audit и готовят EventBus-событие, если соответствующий runtime-модуль установлен. Типы событий collaboration.* принадлежат Collaboration и регистрируются в EventBus из system JSON модуля перед публикацией.

Универсальные карточки WorkflowView могут выводить секцию comments. Для этого в настройке секций представления используется тип comments, а рендеринг выполняется через Collaboration/RenderRecordComments. Функция строит детерминированный поток для записи, показывает видимые сообщения и сохраняет новый комментарий через штатные OpenThread и AddMessage.

Сообщения workflow-переходов сохраняются в Collaboration, а стандартное поле 907 должно получать только короткую человекочитаемую запись действия. Вложения передаются как ссылки на FT или staging-token TemporaryFiles. Уведомления создаются через EventBus и соответствующие подписчики, а не напрямую из Collaboration.