UDL-підтримка

Ви коли небудь замислювалися, чому ви пишете код на Caché Object Script, а він експортується в XML файл?



Так от, пора мінятися. Починаючи з виходу нового середовища розробки Atelier і версії Caché 2016.2, у вас буде можливість експортувати та імпортувати файли в форматі, в якому ви пишете в студії, так званий формат UDL (Universal Definition Language). Тепер ви зможете писати код, який не тільки швидко працює, але ще і приємний оку в експортованому вигляді. Але, виникає інша, не менш важлива проблема: якщо всі нові проекти будуть знаходитися в UDL форматі, той, хто подбати про зворотної сумісності?

Давайте почнемо
У InterSystems дуже серйозно ставляться до питання про зворотної сумісності, тому ми вирішили дати нове життя деяким старим проектам і додати нову можливість — робота з UDL.

ПорівнянняЯк зрозуміло на картинці — COS експортований в XML, праворуч — UDL:



Caché Source Control
Першим на черзі стояло досить-таки простий, але дуже корисний проект, який називається Cache Source Control. Його завдання дуже проста — брати всі файли проекту і експортувати їх в якусь папку після кожної вдалої компіляції, а також імпортувати нові файли, які з'являються в папці. До переродження цей контроль версій міг експортувати файли у двох форматах:

  • xml — всі файли мали розширення .xml
  • (cls, mac, int, dfi).xml — всі файли мали розширення .cls.xml і т. д.
Зараз же достатньо поміняти параметр ExpMode на формат UDL для того, щоб все запрацювало.

Установка
Для установки досить виконати 4 простих кроки:

  • Завантажити або клонувати репозиторій
  • Імпортувати файл — SourceControl.cls.xml в Studio
  • Відкрити портал, зайти в Configuration/Additional Settings/Source Control і вибрати Util.SourceControl, як класу контролю версій у вашій області
  • Відкрити термінал, відкрити вашу область і запустити
    do ##class(Util.SourceControl).Init()
А що, якщо я хочу зробити експорт в іншу папку?

РішенняДля цього передбачено кілька параметрів. ..#ExpMode може мати значення 0, 1, 2 для експорту .xml .cls.xml і в UDL форматах відповідно. Параметр ..#SourceFolder вказує куди зберігати файли. ..#RefreshTime вказує, через скільки секунд потрібно перевіряти на наявність нових файлів у папці, щоб імпортувати їх.

В принципі, у зв'язці з git цей проект дає всі необхідні функції.

CacheUpdater
Наступним проектом у списку на воскресіння стояв CacheUpdater. Його функцію можна відмінно зрозуміти на прикладі. Припустимо, у вас є GitHub репозиторій і 100500 серверів, які його використовують. Це буде нічним кошмаром, якщо ви захочете змінити що-то (Вам скрізь доведеться ручками оновлювати кожен сервер). Як раз таки цю проблему і вирішує CacheUpdater — він періодично оновлює локальні файли, завантажуючи їх з GitHub.

Установка

Його установка трохи складніше:

  • Також завантажуємо всі файли
  • Імпортувати файл Task.cls.xml в Studio
  • Відкрити System Operation/Task Manager/New Task
  • Придумати будь-яке ім'я сум, обрати область, яку ви хочете синхронізувати файли, вибрати GitHubUpdater як тип таска, ввести дані репозиторію і вашого облікового запису на GitHub
  • Натиснути Finish
  • виберіть частоту оновлення
Ви готові до бою, ніяких додаткових налаштувань робити не потрібно.

CacheGitHubCI
Цей же проект є повністю відбулася системою для безперервної інтеграції з GitHub.

Установка проекту
  • Достатньо завантажити файл Install.cls.xml (якщо хочете, можна завантажити всі файли) і імпортувати його в проект

  • Запустити в терміналі^

    Set pVars("Namespace") = "{namespace}" 
    Set pVars("IP") = "{IP}"
    Do ##class(CacheGitHubCI.Install).setup(.pVars)
    

    де, namespace — це область, куди ви хочете встановити проект. Якщо її немає, то вона буде створена автоматично;
    IP — це опціональний параметр вашого сервера(використовується для роботи webhook).

    Наприклад,

    Set pVars("Namespace") = "SAMPLES" 
    Set pVars("IP") = "45.45.45.45:57776"
    Do ##class(CacheGitHubCI.Install).setup(.pVars)
    
Готове, для перевірки працездатності вистачить. Потім, потрібно буде провести такі ж маніпуляції з створенням Task, як і в CacheUpdater'е. Відмінно, все працює! І, мабуть, ненароком в голові у вас з'явилося питання — «А навіщо ж мені CacheGitHubCI, якщо я можу використовувати CacheUpdater?».

ВідповідьCacheGitHubCI дає можливість вказати які дії повинні бути виконані до і після компіляції, робити unit тести. Можна налаштувати webhook'і, щоб всі оновлювалося, як тільки з'явився новий комміт в репозиторії і багато іншого. Про те, як налаштувати всі плюшки цієї системи, можна прочитати в самому репозиторії.

Підсумок
Поки ми щойно оновили 3 репозиторію. Є до чого прагне, у списку перебуває Cache Tort Git, який представляє повноцінну роботу з git в зв'язці з TortoiseGit.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.