Diğer Uygulamaların Verilerini Kullanma
Her IronFlock uygulaması özel, yalıtılmış bir veri arka ucu alır: kendi tabloları, kendi canlı akışları, kendi alanı. Uygulamaları güvenle kurulabilir kılan şey yalıtımdır — ancak tek başına kalsaydı, her uygulamayı aynı zamanda bir siloya dönüştürürdü. Bir toplayıcı uygulamanın bir makineden topladığı veriler, o tek uygulamanın çok ötesinde değer taşır: panoların, analizlerin, makine öğrenimi modellerinin ve raporların ham maddesidir.
Uygulamalar arası veri erişimi, kurulu uygulamaları yapı taşlarına dönüştürür. Bir uygulama, aynı projedeki başka bir uygulamanın verilerini — canlı olay akışlarını ve kaydedilmiş geçmişini — okumak istediğini bildirebilir. Projenin sahibi olan kullanıcı, buna izin verip vermeyeceğine uygulama bazında karar verir ve bunu istediği an değiştirebileceği bir anahtarla yapar. Gerisini platform uygular: erişim kesinlikle salt okunurdur, sağlayıcı uygulamanın gerçekten paylaştığı tablolarla sınırlıdır ve asla proje sınırlarını aşmaz.
Bunun Mümkün Kıldıkları
- Toplayıcıların üzerinde hazır analizler. Makinelerinize bir veri toplayıcısı kurun, ardından toplayıcının ölçümlerini kullanan bir OEE panosu uygulaması kurun — entegrasyon projesi yok, veri dışa aktarımı yok, yapıştırıcı kod yok.
- Tesisat derdi olmadan makine öğrenimi. Bir kestirimci bakım uygulaması, başka bir uygulamanın halihazırda topladığı aylarca süren titreşim ve sıcaklık geçmişiyle eğitilebilir ve canlı okumaları akarken puanlayabilir.
- Monolitler yerine uzmanlaşmış uygulamalar. Toplama, dönüştürme, görselleştirme ve raporlamayı, her biri tek bir işi iyi yapan ayrı uygulamalara bölün — ve bunları Lego tuğlaları gibi proje bazında birleştirin.
- Silolar değil, bir ekosistem. Tüm değeri diğer uygulamaların verileriyle yaptıklarından ibaret olan bir uygulama yayımlayın. App Store sayfası, bir uygulamanın hangi verileri paylaştığını ve hangi verileri talep ettiğini kullanıcılara gösterir.
Nasıl Çalışır
İşin içinde üç taraf vardır ve her biri kendine ait olanın kontrolünü elinde tutar:
- Sağlayıcı uygulama (“Uygulama B”), her uygulamanın yaptığı gibi
data-template.ymldosyasında tablolarını ve dönüşümlerini tanımlar. Varsayılan olarak her şey paylaşılabilirdir; tek tek tablolarprivateolarak işaretlenebilir. - Tüketici uygulama (“Uygulama A”), kendi
data-template.ymldosyasında hangi uygulamalardan okumak istediğini ve nedenini bildirir. - Kullanıcı, her iki uygulamayı bir projeye kurar ve erişimi onaylar — kurulum sırasında ya da daha sonra, projenin uygulama ayarlarındaki uygulama bazlı bir anahtarla. Onay yoksa erişim de yoktur: bildirim tek başına hiçbir hak tanımaz.
Veriler projeden asla çıkmaz. Sağlayıcı uygulamanın geliştiricisinin kullanıcının verilerine yine erişimi yoktur — yetki, proje sahibinin kontrolünde, tek bir proje içindeki kurulu uygulamalar arasında verilir.
Tek Standartlaştırılmış Proje Veritabanı, Birden Çok Yalıtılmış Arka Uç
İşin arka planında, her IronFlock projesi aynı standartlaştırılmış zaman serisi veritabanını sağlar. Bu veritabanının içinde, kurulu her uygulama özel, ayrılmış bir arka uç alanına sahiptir: tabloları kendi veritabanı şemasında yaşar ve kullanıcı okuma erişimi vermedikçe diğer tüm uygulamalara görünmezdir. Proje başına tek veritabanı tasarımı, tüm modeli işler kılan şeydir:
- Projeler arasında yeniden üretilebilir. Bir uygulamanın veri arka ucu, kurulduğu her projede birebir aynı şekilde sağlanır — aynı tablolar, aynı türler, aynı sorgu davranışı; proje ister yönetilen bulutta ister yerinde (on-premises) bir cihazda çalışsın. Ona karşı bir kez geliştirin; her yerde aynı şekilde davranır.
- Merkezi bir toplama ve inceleme noktası. Proje sahipleri tüm uygulamalarının verilerini tek bir yerde görür — uygulama başına dağınık depolar yerine incelenecek, sorgulanacak ve sahip olunacak tek bir veritabanı.
- Varsayılan olarak yalıtım, yetkiyle paylaşım. Şema yalıtımı her uygulamanın alanını özel tutar. Uygulamalar arası bir yetki, başka bir uygulamanın şemasına salt okunur bir pencere açar — aynı veritabanının içinde; dolayısıyla hiçbir şey kopyalanmaz, dışa aktarılmaz veya eşitlenmez. Verinin tek bir evi vardır; değişen yalnızca erişimdir.
Bağımlılığı Bildirme
Tüketici uygulama, okuyacağı uygulamaları .ironflock/data-template.yml dosyasında duyurur:
consumes:
- app: machine-monitor
reason: "Monitörün makine durumu ve sayaç akışlarından OEE hesaplar"
data:
tables:
- tablename: oee_results
columns:
# ... your app's own tables, as usualapp alanı, sağlayıcı uygulamanın teknik uygulama adıdır (App Store sayfasında gösterilir). reason, onay iletişim kutusunda kullanıcıya gösterilir — bunu, uygulamanıza güvenip güvenmeyeceğine karar veren bir insan için yazın.
Verileri Okuma
Çalışma zamanında SDK, sağlayıcı uygulamanın veri arka ucuna bağlanır ve size kendi tablolarınız için zaten kullandığınız okuma API’sinin aynısını sunar:
Python
from ironflock import IronFlock
flock = IronFlock()
# Connect to the providing app's data backend (requires the user's grant)
monitor = await flock.connect_to_app("machine-monitor")
# Discover what it shares
print(monitor.tables) # shared tables with their columns
print(monitor.transforms) # shared transforms (views)
# Query history
rows = await monitor.get_history("machinestate", {"limit": 1000})
# Down-sampled series for charts and models
series = await monitor.get_series_history("measurements", {
"metrics": ["temperature"],
"method": "AVG",
"timeRange": ["2026-07-01T00:00:00Z", "2026-07-04T00:00:00Z"],
})
# Subscribe to live rows as they are collected
async def on_row(row):
print("live reading:", row)
await monitor.subscribe_to_table("measurements", on_row)Kullanıcı erişim vermemişse (veya daha sonra iptal ederse), connectToApp açık, tipli bir hatayla başarısız olur — uygulamanız bu veri kaynağını isteğe bağlı olarak ele almalı ve zarifçe geri çekilmelidir.
Tüm Proje Verilerini Kullanma (Joker)
Bazı uygulamalar genel amaçlı veri tezgahlarıdır — bir Node-RED çalışma ortamı, bir notebook, bir raporlama aracı — ve tüm değerleri, kullanıcının projede hangi veri varsa onunla çalışmasına olanak tanımaktan gelir. Böyle bir uygulama sağlayıcıları önceden adlandıramaz; kullanıcının hangi toplayıcıları veya analiz uygulamalarını kuracağını bilmez. Bunlar için bir joker bildirin: projedeki her uygulamanın verilerine okuma erişimi.
consumes:
- app: "*" # the quotes are REQUIRED — a bare * is a YAML alias
reason: "Bu projedeki her uygulamanın canlı ve geçmiş verileri üzerine akışlar oluşturmanızı sağlar""*" jokeri, projedeki tüm uygulamalara okuma erişimi verir — kullanıcının daha sonra kuracağı uygulamalar dahil, yeniden onay gerekmeden. Modelin geri kalan her şeyi değişmez: hâlâ salt okunurdur, özel tablolar ve dönüşümler yine asla paylaşılmaz ve platform uygulamaları kapsam dışıdır. Kullanıcı jokeri (uygulama bazlı bir liste yerine) tek bir hep-ya-hiç anahtarıyla onaylar ve istediği an iptal edebilir.
Joker kullanan bir tüketici uygulama, sağlayıcı adlarını önceden bilmediğinden, bunları çalışma zamanında keşfeder:
Python
from ironflock import IronFlock
flock = IronFlock()
# Discover every app whose data you may read (name + shared-table catalog)
providers = await flock.list_consumable_apps()
for p in providers:
print(p["app"], p["stages"]) # e.g. "energy-monitor", {"prod": {"tables": [...]}}
# Open one by name (works because you hold the wildcard grant)
energy = await flock.connect_to_app("energy-monitor")
rows = await energy.get_history("meterdata", {"limit": 1000})
# ...or open them all at once
all_apps = await flock.connect_to_all_apps()
for app in all_apps:
await app.subscribe_to_table(app.tables[0]["tablename"], on_row)listConsumableApps() temel işlemdir — tek bir çağrı, hiçbir bağlantı açmaz, her sağlayıcının özel olmayan kataloğunu döndürür; böylece bir seçici oluşturabilirsiniz. connectToAllApps(), hepsini bir kerede açan pratik kısayoldur. Yeni kurulan uygulamalar bir sonraki listConsumableApps() çağrısında otomatik olarak görünür. Kullanıcı jokeri vermemişse, her ikisi de tipli bir NO_GRANT hatasıyla başarısız olur.
Tasarımı Gereği Salt Okunur
Yetki, geleneklerle değil, platformun mesajlaşma katmanı tarafından uygulanır. Bir tüketici uygulama şunları yapabilir:
| İzin verilen | Mümkün olmayan |
|---|---|
| Sağlayıcının canlı veri akışlarına abone olmak | Sağlayıcının verilerini yazmak, değiştirmek veya silmek |
| Sağlayıcının kaydedilmiş geçmişini sorgulamak | Sağlayıcının özel prosedürlerini veya komutlarını çağırmak |
| Paylaşılan dönüşümleri (görünümleri) okumak | private olarak işaretlenmiş tabloları veya dönüşümleri görmek |
| Paylaşılan tablo kataloğunu keşfetmek | Diğer projelerdeki uygulamaların verilerine ulaşmak |
Uygulamanızın Verilerini Paylaşma — ve Bir Kısmını Saklama
Değerli veriler toplayan bir uygulama geliştiriyorsanız, uygulamanızı başkalarının üzerine inşa ettiği bir temel haline getiren şey bu verileri paylaşmaktır. Her şeyi paylaşmak zorunda değilsiniz: iç tabloları veya dönüşümleri private olarak işaretleyin; paylaşılan katalogdan tamamen kaybolurlar — listelenmezler, sorgulanamazlar, akıtılmazlar.
data:
tables:
- tablename: measurements # shared (default)
columns: [ ... ]
- tablename: calibration_state # internal — never visible to other apps
private: true
columns: [ ... ]
transforms:
- tablename: hourly_aggregates # shared views work like shared tables
sql: "SELECT ..."Kontrol Kullanıcıda Kalır
- Kurulum sırasında kullanıcı, yeni uygulamanın hangi kurulu uygulamalardan okumak istediğini ve nedenini tam olarak görür — ve bunlardan herhangi birini reddedebilir. Reddetmek kurulumu asla engellemez; uygulama yalnızca o verileri alamaz.
- Verilen her erişim, projenin uygulama ayarlarında bir anahtar olarak görünür; burada istenildiği an iptal edilebilir (veya daha sonra, örneğin sağlayıcı uygulama kurulduktan sonra, verilebilir).
- Yetkiler proje bazlıdır. Aynı uygulama çiftini başka bir projeye kurmak sıfırdan başlar.
Tipik Bir Bileşim
Bunu somutlaştıran desen — ayrı, birleştirilebilir uygulamalar olarak toplama, analiz ve görselleştirme — Fabrika Veri Çıkarımı bölümünde uçtan uca anlatılır: protokol toplayıcıları makine verilerini çıkarır; OEE panoları, kestirimci bakım modelleri veya enerji analizleri bunları kullanır — her biri bağımsız olarak kurulur ve yetkilendirilir.