凋谢数据协定 (OData) 包含规范的 CRUD (创立、检索、更新和删除)操作,这些操作映射到 HTTP 办法的 POST、GET、PUT/MERGE 和 Delete 几类。
此外,OData 还反对进一步的服务操作:Function Import
,这些操作能够由 HTTP 办法 GET 或 POST 调用,用于解决不能映射到规范 CRUD 操作的任何内容。
通过在数据模型中创立 Function Import
,能够在 service Builder 中实现此类额定的服务操作。
例如,您能够为以下自定义操作创立函数导入:
- Work Item confirmation
- 查看航班的可用性
尽管创立新的函数导入来调用自定义操作很简略,然而如果能够应用规范的 CRUD 操作来调用要应用的操作,那么就应该尽量避免函数导入的创立。也就是说,应该只为不能应用规范操作调用的自定义操作创立函数导入。
Function import 的例子如下:
Function Import 有下列属性须要保护:
- Return Type Kind:
能够在 Complex Type 和 Entity Type 里抉择,也能够抉择不返回任何后果。这种状况下,能够了解成一个产生 side effect 的函数执行,比方审批某个 work item.
- Return Type: 输出心愿函数导入返回的简单类型或实体类型的名称。能够应用输出帮忙从我的项目中抉择现有的简单类型或实体类型。如果输出帮忙为空,则必须首先在我的项目中创立相干的简单类型或实体类型。如果抉择了不返回,此字段是不可编辑的。
- Return Cardinality:
如果 Function Import 的返回类型是实体类型,并且:
如果实体类型的要害属性为外围类型 Edm.DateTime
, Edm.DateTimeoffset
或 Edm.Guid
,则返回基数抉择成 0..1
是不容许的,因为对于这些外围类型,初始 ABAP 值并不是一个无效的 edm 值,它可能会导致运行时异样。因而无奈抉择 0..1
.
如果实体类型的要害属性不是Edm.DateTime
, Edm.DateTimeoffset
或 Edm.Guid
,并返回基数 0..1
, 此时会显示一个正告音讯。因为依据 OData 规范,0..1
不倡议用于任何外围类型。
降级时,如果你的我的项目蕴含 Function Import,它的返回类型是一个实体类型,外围类型 Edm 的关键字段。DateTime, 电火花。DateTimeoffset 或电火花。Guid,你会失去一条谬误音讯。
抉择 HTTP 办法来调用函数导入。如果不抉择 HTTP 办法,则必须应用 GET 或 POST 办法调用函数导入。