這個(gè)系列文章描述了一個(gè)單一的語(yǔ)義數(shù)據(jù)模型來(lái)支持物聯(lián)網(wǎng)和建筑、企業(yè)和消費(fèi)者的數(shù)據(jù)轉(zhuǎn)換。 這種模型必須簡(jiǎn)單可擴(kuò)展, 以便能夠在各行業(yè)領(lǐng)域之間實(shí)現(xiàn)插件化和互操作性。 對(duì)于一個(gè)目前從事智能硬件的老碼農(nóng),覺(jué)得這些文字具有積極的參考意義。這一部分討論通用的數(shù)據(jù)格式和應(yīng)用程序編程接口(API),以及如何利用這些共同的本體。
當(dāng)你剛開(kāi)始嘗試解決一個(gè)問(wèn)題時(shí),
你提出的首個(gè)解決方案是非常復(fù)雜的,
大多數(shù)人都會(huì)停下來(lái)。 但是如果你堅(jiān)持下去,
面對(duì)這個(gè)問(wèn)題, 剝掉更多的洋蔥層,
你會(huì)經(jīng)常得到一些非常優(yōu)雅和簡(jiǎn)單的解決方案。
大多數(shù)人只是沒(méi)有時(shí)間和精力去那里。 ————史蒂夫 · 喬布斯
在對(duì)象世界中管理數(shù)據(jù)
在新興的數(shù)字世界中, 數(shù)十億人、系統(tǒng)和設(shè)備將實(shí)時(shí)互動(dòng), 需要在分布式數(shù)據(jù)管理、互操作性和基于規(guī)則的事件處理方面采取新的破壞性創(chuàng)新方法。
除了統(tǒng)一本體論、"物聯(lián)網(wǎng)標(biāo)準(zhǔn)"和"業(yè)務(wù)標(biāo)準(zhǔn)"聯(lián)盟之外, 還需要匯聚在一個(gè)共同的數(shù)據(jù)交換格式和 API 模型上, 以支持基礎(chǔ)廣泛的跨行業(yè)領(lǐng)域用例之間的插件和播放互操作性。
分布式數(shù)據(jù)管理和互操作性依賴(lài)于一個(gè)共同的本體(語(yǔ)義)和通用數(shù)據(jù)格式(用于語(yǔ)法) , 使服務(wù)能夠識(shí)別和解釋在連接系統(tǒng)之間交換的結(jié)構(gòu)化數(shù)據(jù)。
在本文中,"對(duì)象管理"是指在分布式環(huán)境中創(chuàng)建、存儲(chǔ)、更新、訪(fǎng)問(wèn)和共享本體對(duì)象實(shí)例狀態(tài)的機(jī)制。
什么是服務(wù)?
"服務(wù)"一詞根據(jù)具體情況有不同的含義。 因此, 圍繞服務(wù)的概念存在著一些混亂, 因?yàn)槿藗冊(cè)噲D區(qū)分應(yīng)用服務(wù)、域服務(wù)、基礎(chǔ)設(shè)施服務(wù)、面向服務(wù)的體系結(jié)構(gòu)(SOA)服務(wù)等。 在所有這些情況下,"服務(wù)"一詞是有效的, 但作用不同, 可以跨越應(yīng)用程序的所有層次[15]。
在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)中, 一個(gè)"域"服務(wù)以領(lǐng)域概念(本體類(lèi))為基礎(chǔ), 非常細(xì)粒度(如 微服務(wù)) , 可以被認(rèn)為是一種過(guò)程的封裝。 "應(yīng)用程序"服務(wù)為域服務(wù)提供了一個(gè)托管環(huán)境, 并將域的功能作為一個(gè) API 公開(kāi)給外部服務(wù)。 應(yīng)用程序服務(wù)根據(jù)一個(gè)公共信息模型的標(biāo)識(shí)值和原始數(shù)據(jù)結(jié)構(gòu)(在上層本體中)。
在一個(gè)模糊世界的模型服務(wù)
考慮到物聯(lián)網(wǎng)的大量數(shù)據(jù)以及對(duì)實(shí)時(shí)通信流的需求, Gartner 預(yù)測(cè), 到2022年, 75% 的企業(yè)生成的數(shù)據(jù)將在數(shù)據(jù)中心或云以外創(chuàng)建和處理。 很明顯, 只有云計(jì)算的方法不再能夠跟上必要的體積、延遲、可靠性和安全性的挑戰(zhàn)。
一個(gè)分布式計(jì)算模型(如fog computing)可以通過(guò)提供一種標(biāo)準(zhǔn)的、通用的方式來(lái)管理、管理和分配必要的資源和服務(wù), 使數(shù)字世界具有功能性和互操作性, 從云到物聯(lián)系起來(lái)(圖50)。
圖50 語(yǔ)義互操作性和霧計(jì)算服務(wù)模型
該模型可以"混合"流行的體系結(jié)構(gòu)樣式(如 DDD、模型驅(qū)動(dòng)設(shè)計(jì)、事件源和命令查詢(xún)責(zé)任分離CQRS)來(lái)定義一個(gè)可互操作系統(tǒng)系統(tǒng)中對(duì)象管理的簡(jiǎn)單和可伸縮應(yīng)用服務(wù)。 這些系統(tǒng)可以跨越物聯(lián)網(wǎng)設(shè)備、商業(yè)、車(chē)輛和城市的子系統(tǒng)。 這些服務(wù)可以利用上層本體和信息模型(見(jiàn)第二部分)來(lái)支持系統(tǒng)連接、統(tǒng)一數(shù)據(jù)交換、事件和查詢(xún)處理、單元和標(biāo)識(shí)符轉(zhuǎn)換以及語(yǔ)義注釋。 為了擴(kuò)展規(guī)模, 這些服務(wù)必須是穩(wěn)定, 不變而且獨(dú)立,從邊緣控制器到云服務(wù)器,可以嵌入到任何類(lèi)型的機(jī)器。
該模型可以定義一組對(duì)象管理服務(wù)(類(lèi)似于 IETF 的可擴(kuò)展供應(yīng)協(xié)議(EPP)) , 它們沒(méi)有明確地與特定對(duì)象綁定, 并且可以擴(kuò)展到所有本體類(lèi)中的對(duì)象。 雖然對(duì)象管理與面向?qū)ο蟪绦蛟O(shè)計(jì)相似, 但該服務(wù)模型可以代表類(lèi)似于模型驅(qū)動(dòng)開(kāi)發(fā)編程中的元數(shù)據(jù)抽象。 這些服務(wù)可以創(chuàng)建元數(shù)據(jù), 并在運(yùn)行時(shí)解釋該元數(shù)據(jù)。 代表本體的元數(shù)據(jù)可以在一個(gè)完全抽象于任何編程環(huán)境的存儲(chǔ)庫(kù)中維護(hù)。 底層代碼作為服務(wù)的平臺(tái)(例如 Mendix)可以利用這種服務(wù)模型, 在完全通過(guò)元數(shù)據(jù)解釋執(zhí)行的應(yīng)用程序之間提供固有的互操作性。
雖然服務(wù)和安全模型之間存在著很強(qiáng)的關(guān)系, 但是該系列中的這一部分將側(cè)重于與語(yǔ)義相關(guān)的服務(wù), 這與任何特定的安全模型無(wú)關(guān)。
有效消息載荷的網(wǎng)格
為了創(chuàng)造價(jià)值, 物聯(lián)網(wǎng)設(shè)備生成的數(shù)據(jù)越來(lái)越多地在一個(gè)時(shí)間序列內(nèi)進(jìn)行時(shí)間戳標(biāo)注, 并在間隔或狀態(tài)變化時(shí)傳輸。 隨著業(yè)務(wù)應(yīng)用程序越來(lái)越以IOT為中心, 并圍繞事件驅(qū)動(dòng)的架構(gòu), 來(lái)自業(yè)務(wù)事件的數(shù)據(jù)也可以構(gòu)建為一個(gè)時(shí)間序列。 查詢(xún)響應(yīng)可以包括基于這些事件更改的設(shè)備和信息對(duì)象的當(dāng)前狀態(tài)。 時(shí)間序列和查詢(xún)響應(yīng)數(shù)據(jù)代表了大多數(shù)分布式數(shù)據(jù)交換, 并且最有效地包含在網(wǎng)格(表格)結(jié)構(gòu)中。
一個(gè)網(wǎng)格(類(lèi)似于Haystack網(wǎng)格)可以作為分布式數(shù)據(jù)管理的核心數(shù)據(jù)格式, 可以采用適合于特定通信協(xié)議的同步格式傳輸(圖51)。 例如, 一個(gè)網(wǎng)格可以編碼為一個(gè) JSON數(shù)組(二維) , 用于通過(guò) HTTP 消息傳輸。 或者它可以編碼為一個(gè)簡(jiǎn)潔的二進(jìn)制對(duì)象識(shí)別(CBOR)數(shù)組, 用于通過(guò) CoAP 傳輸。
圖51 連接系統(tǒng)交換序列化二維網(wǎng)格中的數(shù)據(jù)
由組織機(jī)構(gòu)定義的數(shù)據(jù)交換服務(wù)支持的同步格式各不相同(圖52)。 最初主要為服務(wù)器實(shí)現(xiàn)設(shè)計(jì)的服務(wù)(GS1 EDI 和 IETF EPP)支持 XML, 而那些針對(duì)資源受限設(shè)備的服務(wù)支持更多的壓縮編碼格式(如 JSON 和 CBOR)。 網(wǎng)格數(shù)據(jù)可以被編碼到這些格式中的任何一個(gè)。
圖52 消息負(fù)載的數(shù)據(jù)序列化 / 編碼格式
應(yīng)用服務(wù)的通用 API 網(wǎng)關(guān)
通用的 API 網(wǎng)關(guān)可以在控制器設(shè)備中實(shí)現(xiàn), 作為連接系統(tǒng)所有入站消息的單一入口, 可以在控制器設(shè)備中實(shí)現(xiàn)一個(gè)通用 API 網(wǎng)關(guān), 作為連接系統(tǒng)所有入站消息的單一入口點(diǎn)。 網(wǎng)關(guān)可以對(duì)每個(gè)消息進(jìn)行身份驗(yàn)證, 并將去序列化的網(wǎng)格有效負(fù)載轉(zhuǎn)發(fā)到應(yīng)用服務(wù), 這反過(guò)來(lái)又可以調(diào)用由網(wǎng)關(guān)處理生成出站消息的其他服務(wù)。
通過(guò)將一個(gè)普通的 API 作為所有控制器設(shè)備的前端, 可以抽象出不同設(shè)備類(lèi)型和微服務(wù)分區(qū)的復(fù)雜性。 然后, 該設(shè)備可以轉(zhuǎn)換為服務(wù)(device-as-a-service) , 并被其他服務(wù)使用。
基于網(wǎng)格數(shù)據(jù)的類(lèi)型, 網(wǎng)關(guān)可以調(diào)用單獨(dú)的事件和查詢(xún)處理服務(wù)(類(lèi)似于 CQRS 架構(gòu)) , 該服務(wù)可以更新和檢索在"事件存儲(chǔ)"中持久存在的對(duì)象的狀態(tài)(圖53)。
圖53 事件 / 查詢(xún)責(zé)任分離和與事件存儲(chǔ)的交互
一個(gè)時(shí)間序列的事件存儲(chǔ)
自動(dòng)駕駛的 Teslas、自主的華爾街交易算法、智能家居和同一天訂單滿(mǎn)足服務(wù)有什么共同點(diǎn)?
這些應(yīng)用程序依賴(lài)于一種數(shù)據(jù)的形式, 這些數(shù)據(jù)可以測(cè)量事物隨著時(shí)間的變化, 時(shí)間不僅僅是一個(gè)度量, 而是一個(gè)主軸。 這是時(shí)間序列數(shù)據(jù)。 它開(kāi)始在我們的世界中發(fā)揮更大的作用, 遠(yuǎn)遠(yuǎn)超出傳感器數(shù)據(jù)流的范圍。 事實(shí)上, 時(shí)間序列數(shù)據(jù)庫(kù)(TSDBs)已經(jīng)成為增長(zhǎng)最快的數(shù)據(jù)庫(kù)類(lèi)別之一, 可以有效地索引、查詢(xún)、共享和分析。
當(dāng)應(yīng)用于"事件源"的概念時(shí), 可以將 TSDB 視為一個(gè)"事件存儲(chǔ)", 它將對(duì)象狀態(tài)作為一個(gè)時(shí)間序列中的一系列狀態(tài)變化事件。 當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí), 一個(gè)新的事件被追加到事件存儲(chǔ)中, 這是原子本質(zhì)。 通過(guò)禁止事件的更改或刪除, 事件存儲(chǔ)可以提供對(duì)對(duì)象進(jìn)行所有更改的可靠審計(jì)日志。
在圖54中, 一個(gè)事件存儲(chǔ)從9 / 18的一個(gè)事件中反映了 Location 對(duì)象(實(shí)例)的創(chuàng)建, 該事件在9 / 18日02:15分分配給新對(duì)象的所有方。 該事件還為該對(duì)象指定了一個(gè)標(biāo)識(shí)符和類(lèi), 這是它的主鍵。 這個(gè)密鑰包含在隨后的所有事件中, 這些事件通過(guò)給屬性賦值來(lái)改變對(duì)象的狀態(tài)。 位置對(duì)象的當(dāng)前狀態(tài)可以從對(duì)象的每個(gè)屬性最新事件派生出來(lái)。
圖54 通過(guò)在事件存儲(chǔ)中的時(shí)間序列事件獲取 Location 實(shí)例(對(duì)象)的當(dāng)前狀態(tài)
事件可以通過(guò)將一個(gè)布爾值分配給根對(duì)象類(lèi)的"已刪除"屬性, 從而刪除(或刪除)對(duì)象。 通過(guò)這種方法, 事件和事件處理可以有效地創(chuàng)建、更新和刪除對(duì)象, 取代對(duì)單獨(dú)命令和命令處理的需求(讀取可以通過(guò)查詢(xún)和查詢(xún)處理來(lái)處理)。
區(qū)塊鏈 還是 事件存儲(chǔ)
區(qū)塊鏈和事件存儲(chǔ)都是數(shù)據(jù)存儲(chǔ)機(jī)制, 它們可以提供分布式環(huán)境中對(duì)象狀態(tài)變化的附加審計(jì)線(xiàn)索。
雖然區(qū)塊鏈正在享受最近的炒作, 但事件存儲(chǔ) / 事件訂閱方法可以提供許多封鎖鏈承諾的好處, 沒(méi)有開(kāi)銷(xiāo)、社區(qū)建設(shè)和成為礦工的風(fēng)險(xiǎn)。
區(qū)塊鏈?zhǔn)腔诜诸?lèi)賬和交易的概念, 這些概念非常適用于金融業(yè)。 然而, 這些概念是否非常適合于支持一個(gè)可互操作的設(shè)備系統(tǒng)呢?
"混合"可伸縮的方法可以結(jié)合事件存儲(chǔ)中面向?qū)ο笫录牧6扰c區(qū)塊鏈的反篡改驗(yàn)證結(jié)合起來(lái)。
事件處理服務(wù)
代表時(shí)間序列事件的網(wǎng)格數(shù)據(jù)可以結(jié)構(gòu)化為一種通用格式, 使所有事件消費(fèi)應(yīng)用和在控制器設(shè)備上實(shí)現(xiàn)的域服務(wù)進(jìn)行高效處理。 這個(gè)通用事件格式可以支持反映對(duì)象狀態(tài)(屬性值)更改的設(shè)備和業(yè)務(wù)事件。 圖55中的頂部網(wǎng)格在這種格式中顯示了人可讀的值, 但實(shí)際值可以反映底部網(wǎng)格所示的機(jī)器可讀標(biāo)識(shí)符。
圖55 使用事件處理服務(wù)來(lái)從公共格式中保持時(shí)間序列事件
通用 API 網(wǎng)關(guān)可以調(diào)用事件處理服務(wù)來(lái)處理入站的時(shí)間序列事件, 并可以向連接控制器系統(tǒng)發(fā)布出站事件。
事件處理器可以根據(jù)所有系統(tǒng)進(jìn)程(例如微服務(wù))的規(guī)則對(duì)事件進(jìn)行處理, 這些事件可以發(fā)出新的事件(包括與 OCF post / response 類(lèi)似的確認(rèn)事件)。 事件處理器可以將事件發(fā)布到事件存儲(chǔ)中以保持狀態(tài)(類(lèi)似于 Haystack 的寫(xiě)操作)。
一個(gè)基于上層本體的數(shù)據(jù)地圖可以被一個(gè)事件處理器引用, 該處理器接收來(lái)自稀缺資源的傳感器數(shù)據(jù)。 然后, 事件處理器可以用數(shù)據(jù)映射實(shí)例中包含的語(yǔ)義來(lái)注釋從傳感器接收到的語(yǔ)義, 以在公共事件格式中填充所有元數(shù)據(jù)(圖56)。
圖56 使用事件處理服務(wù)和上層本體來(lái)注釋時(shí)間序列語(yǔ)義
這個(gè)注釋可以包括將特定于聯(lián)營(yíng)集團(tuán)的數(shù)據(jù)格式轉(zhuǎn)換為通用事件格式(圖57)。 例如, 一個(gè)溫度傳感器可以提交一個(gè)分隔的名稱(chēng) / 值對(duì)的集合, 這些名稱(chēng) / 值對(duì)提供了除了值之外的語(yǔ)義。 這些數(shù)據(jù)可以轉(zhuǎn)換為僅包含值側(cè)的網(wǎng)格, 因?yàn)榫W(wǎng)格列定位對(duì)應(yīng)于特定的數(shù)據(jù)元素。
圖57 使用事件處理服務(wù)將不同的事件格式轉(zhuǎn)換為通用格式
一個(gè)事件處理器可以參考系統(tǒng)屬性(圖58) , 該上層本體定義了讀 / 寫(xiě)設(shè)置(類(lèi)似 OCF 的只讀屬性)。 基于這些設(shè)置, 事件處理器可以監(jiān)視(讀)和(寫(xiě))與控制器相連的組件設(shè)備(傳感器、執(zhí)行器)的運(yùn)行狀態(tài)。
圖58 使用事件處理服務(wù)獲取 / 設(shè)置基于系統(tǒng)屬性實(shí)例的讀 / 寫(xiě)設(shè)置的風(fēng)扇速度
例如, 如果一個(gè)系統(tǒng)屬性可以同時(shí)讀取和寫(xiě)入風(fēng)扇的速度屬性, 那么事件處理器可以從風(fēng)扇中檢索當(dāng)前值(類(lèi)似于 OCF get) , 并根據(jù)時(shí)間序列事件設(shè)置其值(類(lèi)似于 OCF post)。
基于發(fā)布/訂閱的系統(tǒng)連接
事件存儲(chǔ)可以作為"服務(wù)注冊(cè)表", 存儲(chǔ)定義系統(tǒng)連接和連接系統(tǒng)屬性的事件。 以上層本體為模型的系統(tǒng)連接可以表示實(shí)時(shí)數(shù)據(jù)訂閱(類(lèi)似于 Haystack 的"watch")。 當(dāng)一個(gè)設(shè)備用另一個(gè)設(shè)備啟動(dòng)系統(tǒng)連接(EPP 會(huì)話(huà))時(shí), 該設(shè)備可以響應(yīng)其系統(tǒng)屬性。 設(shè)備可以交換包含系統(tǒng)之間共同屬性的事件和查詢(xún)。 這些屬性代表系統(tǒng)進(jìn)程的內(nèi)部輸入 / 輸出。
圖59 使用事件存儲(chǔ)(注冊(cè)表)的事件處理服務(wù), 向具有共同屬性的連接系統(tǒng)發(fā)布事件
例如, 控制器的 HVAC 系統(tǒng)可以連接到另一個(gè)控制器的氣流控制系統(tǒng)。 這兩個(gè)系統(tǒng)都可以引用在一個(gè)公共本體中定義的"風(fēng)扇"設(shè)備的"速度"屬性。 HVAC系統(tǒng)的一個(gè)過(guò)程(域微服務(wù))可以產(chǎn)生一個(gè)時(shí)間序列事件, 當(dāng)觸發(fā)事件發(fā)生時(shí)(如氣溫變化)時(shí), 可以改變風(fēng)扇速度。 系統(tǒng)控制器的事件處理器可以將此事件發(fā)布到 Airflow 控制系統(tǒng)控制器, 該控制器調(diào)用其事件處理器來(lái)改變連接風(fēng)扇電機(jī)的速度。
數(shù)字雙胞胎的狀態(tài)管理
從設(shè)計(jì)到預(yù)測(cè)分析,"數(shù)字雙胞胎"的使用正變得越來(lái)越普遍。 這個(gè)概念非常簡(jiǎn)單——基本上, 雙胞胎指的是一個(gè)實(shí)際物理資產(chǎn)的動(dòng)態(tài)軟件模型(數(shù)字實(shí)例化)。 該模型能夠?qū)崟r(shí)公開(kāi)設(shè)備及其連接系統(tǒng)的內(nèi)部工作, 并與其進(jìn)行實(shí)時(shí)交互。 數(shù)字雙胞胎可以整合感官和上下文信息, 使各組織能夠從資產(chǎn)信息中受益。 最終的結(jié)果是有可能創(chuàng)造更高的資產(chǎn)業(yè)績(jī), 并使制造商能夠管理服務(wù)設(shè)備。
一個(gè)由對(duì)象管理服務(wù)組成的共同服務(wù)模型可以通過(guò)支持同步和發(fā)布狀態(tài)變化來(lái)管理數(shù)字雙胞胎的狀態(tài)(類(lèi)似于 Eclipse Ditto)。
查詢(xún)處理服務(wù)
網(wǎng)格數(shù)據(jù)可以表示查詢(xún)請(qǐng)求和響應(yīng)。 查詢(xún)請(qǐng)求可以結(jié)構(gòu)化為一種通用格式, 使得應(yīng)用程序服務(wù)可以在控制器設(shè)備上實(shí)現(xiàn)。
通用 API 網(wǎng)關(guān),可以調(diào)用查詢(xún)處理服務(wù)來(lái)處理在公共查詢(xún)格式中的入站查詢(xún)請(qǐng)求(圖60)。 查詢(xún)處理器可以從符合查詢(xún)條件的事件存儲(chǔ)中檢索相關(guān)對(duì)象的當(dāng)前狀態(tài), 并將出站查詢(xún)響應(yīng)返回到請(qǐng)求服務(wù)。
圖60 使用查詢(xún)處理服務(wù)和通用查詢(xún)格式從事件存儲(chǔ)中檢索對(duì)象狀態(tài)
查詢(xún)處理器可以在上層本體中引用詞匯條款(圖61) , 為全局應(yīng)用程序提供多國(guó)家語(yǔ)言支持。 通用查詢(xún)格式可以包含一個(gè)元素, 該元素指定查詢(xún)響應(yīng)中所包含數(shù)據(jù)的人類(lèi)語(yǔ)言。 例如, 如果圖61中所示查詢(xún)指定了"西班牙語(yǔ)"語(yǔ)言, 則在響應(yīng)網(wǎng)格中返回的樓層名稱(chēng)將以西班牙語(yǔ)而不是英文出現(xiàn)。
圖61 使用查詢(xún)處理服務(wù)和上層本體檢索請(qǐng)求語(yǔ)言中的詞匯項(xiàng)
用于標(biāo)識(shí)符轉(zhuǎn)換的服務(wù)
應(yīng)用程序服務(wù)可以在上層本體中引用屬性和單元(圖62) , 以轉(zhuǎn)換包含在時(shí)間序列事件中的備用標(biāo)識(shí)符。
圖62 使用應(yīng)用程序服務(wù)和上層本體在時(shí)間序列事件中轉(zhuǎn)換備用標(biāo)識(shí)符
例如, 事件處理器可以調(diào)用一個(gè)服務(wù)來(lái)轉(zhuǎn)換由屬性標(biāo)識(shí)符限定的替代單元標(biāo)識(shí)符(如 "degF")。 該服務(wù)可以引用該單元對(duì)象, 該對(duì)象包含帶有交替標(biāo)識(shí)符("degF")的標(biāo)識(shí)屬性("ISO 代碼")。 該服務(wù)可將事件中單位標(biāo)識(shí)符的值轉(zhuǎn)換為單元對(duì)象的主標(biāo)識(shí)符(例如 0 華氏度)。
另一個(gè)例子是, 轉(zhuǎn)換服務(wù)可以在 RFID 傳感器生成的時(shí)間序列事件中轉(zhuǎn)換用于識(shí)別"對(duì)象"和"值"元素的替代標(biāo)識(shí)符。 圖63中的"價(jià)值"元素包含一個(gè)可交替的位置識(shí)別號(hào)("0123456789012") , 該標(biāo)識(shí)符符合 GS1的 EPCIS 標(biāo)準(zhǔn)(例如"urn: epc: id: sgln")。 轉(zhuǎn)換服務(wù)可以引用位置對(duì)象, 其中包含帶有備用標(biāo)識(shí)符("012345...")的標(biāo)識(shí)屬性("GLN")。 該服務(wù)可將事件中的"Value"元素轉(zhuǎn)換為 Location 對(duì)象的主標(biāo)識(shí)符("3100 Main...")。
圖63 將 GS1 EPCIS 事件與通用事件格式對(duì)齊并轉(zhuǎn)換 GS1鍵
單位轉(zhuǎn)換服務(wù)
應(yīng)用程序服務(wù)可以參考以上層本體為模型的測(cè)量單位, 以轉(zhuǎn)換包含在時(shí)間序列事件中的"Unit"和"Value"元素。
例如, 一個(gè)事件處理器可以通過(guò)引用相關(guān)單元對(duì)象的"轉(zhuǎn)換因子"和"偏移"屬性值, 從而將圖64中的溫度值("77.4")從華氏轉(zhuǎn)換為攝氏。
圖64 利用應(yīng)用服務(wù)和上層本體在時(shí)間序列事件中轉(zhuǎn)換測(cè)量值和單位
領(lǐng)域特定本體的領(lǐng)域微服務(wù)
雖然應(yīng)用程序服務(wù)的目的是穩(wěn)定和不變的, 但隨著流程和規(guī)則的演變, 可以動(dòng)態(tài)地實(shí)現(xiàn)域微服務(wù), 以有效實(shí)現(xiàn)系統(tǒng)所有者(當(dāng)事方)的目標(biāo)。
每個(gè)系統(tǒng)都可以包含一個(gè)微服務(wù)集合(過(guò)程和規(guī)則的封裝) , 其中引用了特定領(lǐng)域本體中的屬性(例如, 醫(yī)療、零售、智能建筑等)。 這些狹義的、合作的微服務(wù)可以根據(jù)規(guī)則消耗時(shí)間序列事件, 并從它們的行動(dòng)中產(chǎn)生時(shí)間序列事件。
事件處理器可以為復(fù)雜事件處理協(xié)調(diào)域微服務(wù)的執(zhí)行。
圖65提供了一個(gè)域微服務(wù)的例子, 該服務(wù)可以引用在特定領(lǐng)域本體中建模的場(chǎng)景定義, 以根據(jù)觸發(fā)事件(如時(shí)間變化)改變位置的"場(chǎng)景"。
圖65 使用域服務(wù)和本體來(lái)改變辦公室套件中的"場(chǎng)景"
另一個(gè)域微服務(wù)可以引用以公共業(yè)務(wù)本體為模型的業(yè)務(wù)信息對(duì)象, 以生成事件來(lái)定義基于故障設(shè)備觸發(fā)事件的替換順序(圖66)。 同樣的控制器可以改變連接元件(圖論)設(shè)備(如傳感器和執(zhí)行器)的狀態(tài), 也可以用來(lái)改變信息對(duì)象(如訂單)與連接業(yè)務(wù)系統(tǒng)的狀態(tài)。
圖66 使用域服務(wù)和公共業(yè)務(wù)本體從設(shè)備故障中生成替換順序
一個(gè)共同的服務(wù)模型和共同的本體論可以形成一個(gè)"公共對(duì)象管理框架", 支持系統(tǒng)的語(yǔ)義互操作、對(duì)等對(duì)等系統(tǒng)。 這個(gè)框架可以分解數(shù)據(jù)倉(cāng)庫(kù), 消除復(fù)雜的系統(tǒng)集成, 并且只使用元數(shù)據(jù)來(lái)統(tǒng)一信息空間。
References:
15 Vernon, Vaughn, Implementing Domain-Driven Design, Addison-Wesley, 2013
16 Murdock, Paul, Davies, John, et al., "Semantic Interoperability for the Web of Things", ResearchGate, Aug 2016
17 Hambley, Lee, "Blockchain or Event Sourcing", July 2017
18 Richardson, Chris, http://microservices.io
19 Byers, Charles., Swanson, Robert, et al., OpenFog Reference Architecture, OpenFog Consortium, Feb 2017