配方模式指南
配方支持部署到结构化目标、列表视图和 NetLogic 对象,以及带有元数据的可自定义模式,以提高可追溯性。
部署和结构
- 您可以设置要部署配方的特定目标。目标的结构必须与在配方模式中保存的结构相同。
- 您可以在同一个项目中同时使用旧版配方模式和新配方模式,但可能需要手动调整。
用法和参数
- 您可以通过列表视图或使用 NetLogic 来使用配方。
- 配方参数是在配方模式编辑器中选择的条目或数据条目。列表视图中表示的配方参数始终为只读。
配方模式管理
- 您可以创建、编辑和存储具有无限参数和元数据的配方模式。
- 您可以定义和存储自定义元数据,例如作者、创建日期或关联图像,从而增强配方的可追溯性和上下文理解。
性能和事务管理
对于某些任务,配方引入了大量插入/更新/删除操作。这可能会增加完成操作所需的时间,尤其是对于远程数据库和高延迟场景。为了防止数据丢失,支持最小化事务管理。事务管理不可自定义。
重要提示:
为了防止在使用数据记录器和事件记录器发生数据丢失,强烈建议不要使用用于配方的同一个数据库。
查询
EmbeddedDatabase
的示例:SELECT R.*, M.* FROM Recipes AS R LEFT JOIN "RecipeMetadata_RecipeSchema1" AS M ON R.Id = M.RecipeId WHERE R.RecipeSchemaName = 'RecipeSchema1' ORDER BY R.Name
SQL 查询示例
使用以下 SQL 查询在运行时管理配方及其元数据:
配方列表
SELECT * FROM Recipes WHERE RecipeSchemaName = 'DemoRecipeSchema' ORDER BY Name
配方及其元数据列表
SELECT R.*, M.* FROM Recipes AS R LEFT JOIN RecipeMetadata_DemoRecipeSchema AS M ON R.Id = M.RecipeId WHERE R.RecipeSchemaName = 'DemoRecipeSchema' ORDER BY R.Name
特定配方编辑模型中的条目
SELECT * FROM EditModel WHERE RecipeName = {#name:sql_literal} AND RecipeVersion = {#version:sql_literal} ORDER BY DisplayName SELECT * FROM EditModel WHERE RecipeName = {#name:sql_literal} AND RecipeVersion = {#version:sql_literal} AND TypeDisplayName = {#type_name:sql_literal} ORDER BY DisplayName
EditModel 存储表
EditModel 存储表包含以下结构
ItemId | ItemRelativeBrowsePath | TypeId | DisplayName | TypeDisplayName | DataItems |
|---|---|---|---|---|---|
Motor1_id | ["Machine", "Motors", "Motor1"] | MotorType_id | Motor1 | Motor | data_items_array |
Motor2_id | ["Machine", "Motors", "Motor2"] | MotorType_id | Motor2 | Motor | data_items_array |
Tank1_id | ["Machine", "Tanks", "Tank1"] | TankType_id | Tank1 | Tank | data_items_array |
DataItems 是一个 JSON 对象数组:
[ { "RelativeBrowsePath": ["TargetSpeed"], "ElementAccess": null, "Value": 1500.0, "DataTypeId": "Float", "ActualDataTypeID": "Float" }, { "RelativeBrowsePath": ["TorqueLimit"], "ElementAccess": null, "Value": 15.5, "DataTypeId": "Float", "ActualDataTypeID": "Float" } ]
提供反馈