共用方式為


數據處理和使用者定義函式

重要

已發行新版本的 Azure Digital Twins 服務。 鑒於新服務的擴充功能,原始的 Azure Digital Twins 服務(本檔集所述)已淘汰。

若要檢視新服務的檔,請流覽使用 中的 Azure Digital Twins 檔

Azure Digital Twins 提供進階計算功能。 開發人員可以針對傳入遙測訊息定義及執行自定義函式,以將事件傳送至預先定義的端點。

數據處理流程

裝置將遙測數據傳送至 Azure Digital Twins 之後,開發人員可以處理四個階段中的數據:驗證、比對計算分派

Azure Digital Twins 數據處理流程

  1. 驗證階段會將傳入遙測訊息轉換成通常了解 的數據傳輸物件 格式。 此階段也會執行裝置和感測器驗證。
  2. 比對階段會尋找要執行的適當用戶定義函式。 預先定義的比對器會根據傳入遙測訊息中的裝置、感測器和空間資訊,尋找使用者定義的函式。
  3. 計算階段會執行上一個階段中相符的使用者定義函式。 這些函式可能會讀取和更新空間圖形節點上的計算值,並可發出自定義通知。
  4. 分派階段會將任何自定義通知從計算階段路由傳送至圖形中定義的端點。

資料處理物件

Azure Digital Twins 中的數據處理包含定義三個物件: 比對器用戶定義函式和 角色指派

Azure Digital Twins 數據處理物件

比對器

比對器會定義一組條件,以根據傳入的感測器遙測來評估要採取的動作。 判斷比對的條件可能包括來自感測器的屬性、感測器的父裝置,以及感測器的父空間。 條件會以與 JSON 路徑比較來表示,如下列範例所述:

  • 逸出字串值所代表之數據類型 Temperature 的所有感測器 \"Temperature\"
  • 在其 01 埠中
  • 屬於擴充屬性索引鍵 Manufacturer 設定為逸出字串值的裝置 \"Contoso\"
  • 屬於逸出字串所指定型別的空格 \"Venue\"
  • 這是父SpaceId的子代 DE8F06CA-1138-4AD7-89F4-F782CC6F69FD
{
  "id": "23535afafd-f39b-46c0-9b0c-0dd3892a1c30",
  "name": "My custom matcher",
  "spaceId": "DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
  "description": "All sensors of datatype Temperature with 01 in their port that belong to devices with the extended property key Manufacturer set to the value Contoso and that belong to spaces of type Venue that are somewhere below space Id DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
  "conditions": [
    {
      "id": "43898sg43-e15a-4e9c-abb8-2gw464364",
      "target": "Sensor",
      "path": "$.dataType",
      "value": "\"Temperature\"",
      "comparison": "Equals"
    },
    {
      "id": "wt3th44-e15a-35sg-seg3-235wf3ga463",
      "target": "Sensor",
      "path": "$.port",
      "value": "01",
      "comparison": "Contains"
    },
    {
      "id": "735hs33-e15a-37jj-23532-db901d550af5",
      "target": "SensorDevice",
      "path": "$.properties[?(@.name == 'Manufacturer')].value",
      "value": "\"Contoso\"",
      "comparison": "Equals"
    },
    {
      "id": "222325-e15a-49fg-5744-463643644",
      "target": "SensorSpace",
      "path": "$.type",
      "value": "\"Venue\"",
      "comparison": "Equals"
    }
  ]
}

重要

  • JSON 路徑區分大小寫。
  • JSON 承載與下列所傳回的承載相同:
    • /sensors/{id}?includes=properties,types 用於感測器。
    • /devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes 適用於感測器的父裝置。
    • /spaces/{id}?includes=properties,types,location,timezone 用於感測器的父空間。
  • 比較不區分大小寫。

使用者自訂函數

用戶定義的函式是在隔離的 Azure Digital Twins 環境中執行的自定義函式。 用戶定義函式可存取收到原始感測器遙測訊息。 用戶定義函式也可以存取空間圖形和發送器服務。 在圖形內註冊用戶定義函式之後,必須建立比對器(以上詳述),以指定函式執行的時間。 例如,當 Azure Digital Twins 從指定的感測器接收新的遙測時,相符的使用者定義函式可以計算最後幾個感測器讀數的移動平均值。

用戶定義函式可以用 JavaScript 撰寫。 協助程式方法會在使用者定義的執行環境中與圖形互動。 開發人員可以針對感測器遙測訊息執行自定義代碼段。 範例包含:

  • 將感測器直接讀取設定為圖形內的感測器物件。
  • 根據圖表空間內的不同感測器讀數執行動作。
  • 在符合傳入感測器讀數的特定條件時建立通知。
  • 在傳送通知之前,將圖形元數據附加至感測器讀取。

如需詳細資訊,請參閱 如何使用使用者定義函數

範例

Digital Twins C# 範例的 GitHub 存放庫包含一些使用者定義的函式範例:

  • 此函式 會尋找二氧化碳、動作和溫度值,以判斷空間是否可在範圍內使用這些值。 Digital Twins教學課程會進一步探索此函式。
  • 此函式 會尋找來自多個運動感測器的數據,並判斷如果其中沒有任何一個動作偵測到任何動作,則空間可供使用。 您可以藉由在檔案的批注區段中所做的變更,輕鬆地取代快速入門教學課程中使用的使用者定義函式。

角色指派

用戶定義的函式動作受限於 Azure Digital Twins 角色型存取控制 ,以保護服務內的數據。 角色指派會定義哪些使用者定義函式具有與空間圖形及其實體互動的適當許可權。 例如,使用者定義函數在指定空間下,可能會有 CREATEREADUPDATE 或 DELETE 圖形數據的能力和許可權。 當使用者定義函數詢問圖形數據或嘗試動作時,會檢查使用者定義函式的存取層級。 如需詳細資訊,請參閱 角色型訪問控制

比對器可以觸發沒有角色指派的用戶定義函式。 在此情況下,使用者定義函數無法從圖形讀取任何數據。

下一步