Розробка трубопроводів
Fledge надає систему трубопроводів, яка дозволяє передавати дані від точки їхнього надходження до екземпляру Fledge, південного плагіна, до рівня зберігання, в якому вони буферизуються. Етапи цього трубопроводу є фільтрами обробки Fledge, вихід одного фільтра стає входом наступного. Fledge також підтримує трубопроводи на виході, коли потоки даних передаються з рівня зберігання до північних плагінів і далі до систем, інтегрованих вище за течією від екземпляра Fledge.
Операції в південному сервісі виконуються над даними з одного джерела, в той час як операції в північному сервісі виконуються над даними, що прямують до одного пункту призначення. Фільтруючий трубопровід на півночі буде мати дані з джерел, що протікають через трубопровід, ці дані будуть формувати змішаний потік, який буде містити всі дані в порядку дати/часу.

Найкращі практики
Fledge може підтримувати декілька трубопроводів в одному екземплярі Fledge, однак, якщо у вас є добре налагоджений екземпляр Fledge з критично важливими трубопроводами, які працюють на цьому екземплярі, можливо, не завжди є найкращою практикою розробляти новий, експериментальний трубопровод на тому ж екземплярі Fledge.
Розглянемо спочатку південні плагіни; однією з причин цього є те, що дані, які надходять до екземпляра Fledge через ваш новий трубопровод, будуть відправлені до системи зберігання, а потім далі до північних пунктів призначення, змішані з даними з інших трубопроводів у вашій системі. Якщо ваш новий трубопровод є некоректним або генерує неякісні дані, ви опинитеся в ситуації, коли ці дані будуть надіслані до існуючих висхідних систем.
Якщо неможливо уникнути використання одного і того ж екземпляра, існують методи, які можна використати для зменшення ризику, а саме: використання фільтра активів для блокування даних з вашого нового південного трубопроводу, що надходять до існуючих північних трубопроводів, а потім надсилаються до ваших систем видобутку. Для цього потрібно просто вставити фільтр на початку кожного з існуючих північних трубопроводів і налаштувати його так, щоб він виключав названі активи, які будуть поглинуті вашим новим, експериментальним трубопроводом. Це дозволить даним з існуючого південного трубопроводу продовжувати надходити до висхідних систем, але не дозволить вашим новим даним надходити до цих систем.
З таким підходом все ще існують ризики, пов'язані з тим, що новий сервіс може видобувати активи з іншою назвою, ніж ви очікували, або може видобувати більше активів, ніж ви очікували. Дані також надсилаються до сервісу сповіщень з вашого нового трубопроводу, що може вплинути на роботу цьго сервісу, хоча це менш імовірно, ніж надсилання неправильних або небажаних даних на північ. Існує також обмеження, що ваші нові дані будуть вилучені з буфера і не зможуть бути надіслані до існуючих північних трубопроводів, якщо згодом ви вирішите, що дані є якісними. Дані з новими назвами активів з вашого нового трубопроводу будуть надсилатися тільки після того, як ви видалите фільтр |assetFilter| з тих північних трубопроводів, які надсилають дані до ваших видобувних систем.
Розробка нових північних трубопроводів є менш ризикованою, оскільки дані, які надходять зі сховища і призначені для вашого нового трубопроводу до видобувних систем, фактично дублюються, коли вони залишають систему зберігання. Основний ризик полягає в тому, що ця нова послуга вважатиметься такою, ніби дані були надіслані до системи зберігання, і це може призвести до того, що ваші дані стануть придатними для використання системою очищення раніше, ніж це було б у іншому випадку. Якщо ви хочете запобігти цьому, ви можете оновити конфігурацію очищення, щоб наполягати на надсиланні даних на всі північні канали, перш ніж вони вважатимуться надісланими для цілей системи очищення. У більшості випадків це запобіжний захід, який можна проігнорувати, однак, якщо ви налаштували систему Fledge на агресивне очищення даних, вам варто це врахувати.
Інкрементна розробка
Механізм трубопроводу Fledge розроблений для модульної розробки вимог до обробки даних вашого додатку. трубопровод будується з набору невеликих цільових фільтрів, кожен з яких виконує невеликий інкрементний процес обробки даних. При створенні трубопроводів, особливо при використанні фільтрів, які дозволяють застосовувати скрипти до даних, слід враховувати цей підхід і не створювати існуючу функціональність, яку можна імпортувати, застосувавши існуючий фільтр до трубопроводу. Замість цього використовуйте існуючий фільтр і додайте більше кроків до трубопроводу, оскільки середовище Fledge розроблено таким чином, щоб забезпечити мінімальні накладні витрати при об'єднанні фільтрів у трубопровод. Крім того, розробник трубопроводу може використовувати вже існуючі та протестовані фільтри, таким чином зменшуючи витрати на розробку та тестування нової функціональності, яка не є необхідною.
Такий підхід також може бути прийнятий в процесі побудови трубопроводу, особливо якщо ви використовуєте |assetFilter| для блокування подальшого просування даних через систему Fledge після їх буферизації в шарі зберігання. Просто додайте ваш південний сервіс, запустіть його і подивіться на дані, які буферизуються з цього сервісу. Тепер ви можете додати до трубопроводу ще один фільтр і поспостерігати, як він змінює дані, що буферизуються. Оскільки ви заблокували передачу даних далі у вашій системі, ці дані зникнуть в рамках звичайного процесу очищення і не потраплять у висхідні системи на північ від Fledge.
Якщо ви розробляєте на автономному екземплярі Fledge, без наявних північних сервісів, і ви все одно хочете, щоб ваші експериментальні дані зникли, цього можна досягти за допомогою процесу очищення. Просто налаштуйте процес очищення на часте видалення даних і встановіть процес на видалення невідправлених даних. Це означатиме, що дані залишатимуться у буфері, щоб ви могли їх переглянути протягом короткого часу, перш ніж їх буде видалено з буфера. Просто налаштуйте інтервал очищення так, щоб у вас було достатньо часу для перегляду даних у буфері. Якщо всі експериментальні дані було очищено до того, як ви запустите систему, у вас не виникне проблем з надсиланням експериментальних даних наверх.
Звичайно, не забудьте переналаштувати процес очищення, щоб він більше відповідав тривалості, протягом якої ви бажаєте зберігати дані, і вимкнути очищення невідправлених даних, якщо ви не бажаєте втратити дані, які не можуть бути відправлені протягом періоду часу, що перевищує інтервал очищення.
Налаштування більш агресивної системи очищення з вилученням невідправлених даних, ймовірно, не є тим, що ви хотіли б робити в існуючій системі з живими трубопроводами даних, і не повинно використовуватися як метод для розробки нових трубопроводів у такій системі.
Альтернативним підходом для видалення даних із системи є увімкнення функції Features of Developer у користувацькому інтерфейсі Fledge. Це можна зробити, вибравши сторінку Settings в меню ліворуч і натиснувши опцію внизу екрана.

Серед додаткових функцій, які можна отримати, вибравши Features of Developer, буде можливість вручну очищати дані зі сховища даних Fledge. Це очищення на вимогу може бути застосовано як до одного активу, так і до всіх актив ів у сховищі даних. Доступ до операцій ручного очищення здійснюється через пункт Assets & Readings в меню Fledge. Коли увімкнено Features of Developer, з'являться кілька нових піктограм, по одній для кожного активу і одна, яка впливає на всі активи.

Ці іконки нагадують гумки і розташовані в кожному рядку активів, а також у верхньому правому куті поруч з іконкою довідки. Натискання на піктограму гумки в кожному з рядків очистить дані тільки для цього активу, залишаючи інші активи недоторканими. Натискання на піктограму у верхньому правому куті призведе до очищення всіх активів, які наразі знаходяться у сховищі даних.
В обох випадках буде показано діалогове вікно підтвердження, щоб запобігти випадковому використанню. Якщо ви вирішите продовжити, вибрані дані в буфері Fledge, або всі, або певний актив, буде видалено. Не існує способу скасувати цю операцію або відновити дані після того, як вони були видалені.
Інший наслідок, який може виникнути при розробці нових трубопроводів, полягає в тому, що в процесі розр обки створюються активи, які не потрібні в готовому трубопроводі. Однак актив залишається пов'язаним з послугою, а назва активу і кількість отриманих показань буде відображатися на сторінці South Services в інтерфейсі користувача.
Ви можете знецінити зв'язок між послугою та назвою активу, використовуючи можливості інтерфейсу користувача для розробників. Для цього ви повинні спочатку увімкнути Features of Developer на сторінці налаштувань користувацького інтерфейсу. Тепер при перегляді сторінки South Services ви побачите значок гумки поруч з кожним активом, перерахованим для послуги.
Якщо ви натиснете на цю іконку, вам буде запропоновано розірвати зв'язок між активом і послугою. Якщо ви виберете Yes, зв'язок буде розірвано, і актив більше не відображатиметься поруч із сервісом.
Видалення зв'язку не призведе до видалення статистики для активу, просто буде видалено зв'язок з послугою, а отже, він не буде відображатися поруч з послугою.
Якщо зв'язок з активом вилучено для активу, який все ще використовується, його буде автоматично відновлено наступного разу, коли для цього активу буде отримано дані. Оскільки статистика не була видалена, коли зв'язок було знищено, попередні показники все ще будуть включені до статистики, коли зв'язок буде відновлено.
Ці Features of Developer призначені для використання при розробці трубопроводів у Fledge, функціональність не є чимось, що слід використовувати у звичайній роботі, і функції розробника слід вимкнути, коли трубопроводи не розробляються.
Пісочниця для Північної Системи
Розробка північних трубопроводів по частинах може бути більш проблематичною, оскільки ви навряд чи захочете вводити погано відформатовані дані у свої видобувні системи. Один з підходів до вирішення цієї проблеми полягає в тому, щоб мати якусь "жертовну" північну систему, яку ви можете використовувати для розробки трубопроводу і визначення того, чи виконується на ньому необхідний процес. У цьому випадку неважливо, якщо ця система буде забруднена даними не в тій формі, яка вам потрібна. В ідеалі, ви повинні використовувати систему того ж типу для розробки, а потім переключитися на виробничу систему, коли ви переконаєтеся, що ваш трубопровод працює правильно.
Якщо з якихось причин це неможливо, другим варіантом буде використання іншого екземпляра Fledge в якості тестової північної системи. Замість того, щоб налаштовувати північний плагін, який ви хочете використовувати, ви можете встановити північний HTTP-плагін і підключити його до другого екземпляра Fledge з запущеним HTTP-плагіном. Ваші дані будуть надіслані на новий екземпляр Fledge, де ви зможете переглянути дані, щоб побачити, що було надіслано першим екземпляром Fledge. Потім ви створюєте північний трубопровод на цьому першому екземплярі Fledge так само, як ви це робили з південним трубопроводом. Після того, як ви переконаєтеся, вам потрібно буде ретельно відтворити ваш північний трубопровод на основі правильного північного плагіна, і ви можете видалити ваш експериментальний північний трубопровод і знищити ваш жертовний екземпляр Fledge, який ви використовували для буферизації і перегляду даних.
Специфічні міркування щодо OMF
Деякі північні плагіни створюють специфічні проблеми для підходу інкрементальної розробки, оскільки зміна формату даних, які до них надсилаються, може спричинити внутрішні проблеми. Одним з таких плагінів є плагін OMF, який використовується для надсилання даних до PI-сервера Aveva.
Проблема з PI-сервером полягає в тому, що він призначений для зберігання даних у фіксованих форматах, тому наявність даних, які не мають узгодженого типу, тобто складаються з набору атрибутів, може спричинити проблеми. У PI-сервері кожен новий тип даних стає новим тегом, це не є проблемою, якщо ви бажаєте використовувати гнучкі імена тегів. Однак, якщо ви вимагаєте, щоб у PI-сервері використовувалися фіксовані імена тегів, використовуючи фільтр OMFhints, це може стати проблемою для інкрементального розвитку вашого трубопроводу. Зміна властивостей тегу призведе до того, що для нього буде потрібно нове ім'я.
Найпростіший підхід полягає у тому, щоб виконати всю початкову розробку без фіксованої назви, а потім виконати зіставлення назв на завершальному етапі розробки трубопроводу. Хоча це не ідеальний варіант, він дає відносно простий підхід до вирішення проблеми.
Якщо вам згодом знадобиться повторно використовувати імена тегів з різними типами, необхідно буде очистити визначення типів з PI Server, видаливши шаблони елементів, самі елементи і кеш. Після цього потрібно перезапустити PI Web API, видалити і створити заново плагін Fledge north.
Вивчення даних
Найпростіший спосіб перевірити дані, які ви отримали через новий південний трубопровод, - це скористатися графічним інтерфейсом Fledge для перевірки даних, які наразі знаходяться в буфері. Ви можете переглянути дані або за допомогою графічної функції на сторінці Активи та показання, яка покаже дані часових рядів.

Якщо у вас є дані, які за своєю природою не є часовими рядами, наприклад, рядки, ви можете скористатися табличним відображенням, щоб показати дані, які не є часовими рядами, зображення, якщо такі є, або завантажити дані в електронну таблицю. Таке подання не міститиме жодних зображень у показаннях.

Вивчення журналів
Важливо переглядати логи для вашого сервісу під час побудови трубопроводу, це пов'язано з тим, що екземпляри Fledge повинні працювати як автоматизовані сервіси, а отже, будь-які помилки або попередження, що генеруються, записуються до журналів, а не в інтерактивний сеанс користувача. Проте, інтерфейс користувача Fledge надає ряд механізмів для перегляду даних журналу та їх фільтрації за певними джерелами. Ви можете переглянути журнал з пункту "System" в меню "Log", а потім відфільтрувати джерело до певної півден ної або північного сервісу.

Крім того, якщо ви відкриваєте сторінку конфігурації північної або південної частини вашого сервісу, ви побачите іконку в нижньому лівому кутку екрана, яка виглядає як сторінка тексту із загнутим кутом. Просто натисніть на цю піктограму, і на екрані відобразиться сторінка журналу, яка буде автоматично відфільтрована для перегляду журналів тільки того сервісу, конфігурацію якої ви редагували раніше.
Журнал відображається спочатку з найновішим записом, а старіші записи показуються в міру просування вниз по сторінці. Ви можете перейти на наступну сторінку, щоб переглянути старіші записи журналу. Також можна переглянути різні ступені серйозності журналу: фатальні, помилки, попередження, інформаційні та налагоджувальні. За замовчуванням сервіс не буде записувати інформаційні та налагоджувальні повідомлення до журналу, але ви можете увімкнути ці рівні за допомогою додаткових параметрів конфігурації сервісу. Це призведе до того, що записи до журналу будуть записуватися, але перед тим, як ви зможете їх переглянути, ви повинні встановити відповідний рівень фільтрації суворості, і користувацький інтерфейс за замовчуванням відфільтрує інформаційні та налагоджувальні повідомлення.
Важливо, щоб після завершення сеансу налагодження ви повернули рівень журналювання до попереджень і вище, інакше це призведе до запису надмірної кількості записів до системного журналу.
Також зауважте, що журнали записуються до підсистеми журналювання базової версії Linux, або до syslog, або до механізму повідомлень, залежно від вашого дистрибутива Linux. Це означає, що ці файли журналів будуть автоматично ротируватися механізмами операційної системи. Це означає, що за звичайних обставин система не буде заповнювати підсистему зберігання даних. Старіші файли журналів зберігатимуться протягом короткого часу, але будуть автоматично видалені через кілька днів. Це слід мати на увазі, якщо в журналі є інформація, яку ви хочете зберегти. Крім того, користувацький інтерфейс дозволить вам переглядати дані лише в останньому файлі журналу.
Також можна налаштувати механізм syslog для запису файлів журналу у нестандартні файли або на віддалені машини. Механізми Fledge для перегляду системних журналів вимагають використання стандартних імен для файлів журналів.