Thursday, 25 February 2021
  3 Replies
  1.1K Visits
0
Votes
Undo
Hallo,

ich hab eine Frage bezüglich der Performance der Webservices. Dabei möchte ich gerne wissen, ob die es alternative Abfragen gibt, die performanter sind.

Drei Anwendungen der Webservices habe ich ausprobiert:

1. Abfrage eines Projektnamens. Anhand dieser Abfrage wird der Name geändert: ca 400ms.
Dies ist doch relativ viel, für eine einfache Attributsabfrage und Änderung. Vl. gibt es hier ein besseres Vorgehen?

Für die Abfrage wurde ein GET verwendet:

http://{{HOST}}:8734/api/rs/v1/{{DATABASE}}/objects/00000000-0000-0000-0000-000002150B48/attributes/5


Und für die Namensanpassung ein POST:

http://{{HOST}}:8734/BasicDataService/UpdateObjectData/{{DATABASE}}

mit dem Body:

{
"OutputObjectData": true,
"UpdateData": [
{
"ObjectId": "00000000-0000-0000-0000-000002150B48",
"UpdateMode" : 0,
"Attributes": [
{
"AttributeId": 5,
"Value": "TestprojektWebService"
}
]
}
]
}


2. Suchen aller Betriebsmittel unterhalb eines Ordners mit Filterung auf einen bestimmten Attributswert. Außerdem wird hier noch geprüft, ob das Betriebsmittel mit einer Funktion assoziiert ist.
Mir ist aufgefallen, dass sich durch das Suchen der Assoziation die Ladezeit in etwa verfünffacht.
Die Funktion benötigt ca. 12 Sekunden
Hier habe ich zwar ein Projekt mit sehr vielen Betriebsmitteln (ca. 2000) verwendet, eine Suche über so viele Betriebsmittel und eine Überprüfung ob diese mit einer Funktion verknüpft sind ist allerdings eine Standardoperation für uns. Daher wäre ich froh wenn es eine andere, um einiges schnellere Variante geben würde (Evtl. kann man auch anders ermitteln ob das Betriebsmittel mit einer Funktion verknüpft ist).
Verwendet wurde ein POST:

http://{{HOST}}:8734/BasicDataService/GetObjectData/{{DATABASE}}

mit dem Body:

{
"StartObjectId": "00000000-0000-0000-0000-000002168901",
"SearchMode":1,
"OutputObjectKindList" : [{"CoverId":113}],
"OutputDesignation":true,
"OutputLockStructure":true,
"OutputAllAttributes":0,
"FullNameLoadMode":0,
"OutputTimestamp":false,
"UseWorksheet":true,
"OutputAssocList":[{
"Role":100
}],
"OutputAttributeList":[{"AttributeId":25},{"AttributeId":10348}],
"AttributeFilterList": [ {
"FilterExpressions": [ { "__type": "FilterItemGroup:#Aucotec.EngineeringBase.Server.Service",
"Operator": 0, "FilterExpressions": [ {
"AttriubteId": 10348, "CompareOperator": 2, "Value": "ET_AUS" } ] } ] } ]

}



3. Funktion unter eine andere Funktion schieben: benötigt ca. 125ms
Wird der Vollständigkeit halber angeführt, hier bin ich mit der Performance zufrieden.
Verwendet wurde ein POST:

http://{{HOST}}:8734/BasicDataService/UpdateObjectData/{{DATABASE}}

mit dem Body:

{
"OutputObjectData": true,
"UpdateData": [
{
"ParentId": "00000000-0000-0000-0000-0000000BE7CA",
"ObjectId": "00000000-0000-0000-0000-0000006C6ED0",
"UpdateMode" : 0
}
]
}



Vielen Dank!
Mit freundlichen Grüßen,
Ricardo