Zum Hauptinhalt springen

Erstellen einer neuen Aufgabe

Verwendungszweck

Eine Aufgabe offline erstellen - dies ist nur für sehr fortgeschrittene Szenarien gedacht.

Normalerweise sind alle Aufgaben für Ihre Benutzer bereits vorher vorhanden, da sie im iCL Portal mithilfe des Excel-Import, die Benutzeroberfläche oder die REST-Schnittstelle erstellt wurden. Es kann jedoch einige seltene Fälle geben, in denen eine Aufgabe noch nicht existiert, und Sie möchten sie in iCL Filler offline erstellen. Ein Beispiel hierfür wäre: Ihre Inspektoren verwalten ihre Arbeit in einer externen App. Während sie bei einem Kunden vor Ort sind, entdecken sie eine Anlage/Ausrüstung/Einheit, die inspiziert werden muss, aber sie finden keine passende Aufgabe. Nachdem sie sie in ihrer externen Anwendung erstellt haben, möchten sie sie in iCL Filler öffnen. Aber natürlich existiert sie noch nicht in iCL Filler. Um dieses Problem zu lösen, bereiten Sie einfach einen "Aufgaben-Link" in der externen App vor. Sobald der Benutzer auf diesen Link klickt, öffnet sich iCL Filler und erstellt die Aufgabe automatisch.

Die URL hat das folgende Format:

https://filler.opti-q.com/api/tasks/openorcreate?p=<url_encoded_json_document>

oder

https://filler.opti-q.com?$action=openorcreatetask&p=<url_encoded_json_document>

Im Grunde entspricht diese API funktional der API "Create Task" der REST-Schnittstelle des iCL Portals: Sie können eine Aufgabe erstellen und Elemente, die geprüft werden müssen, sowie benutzerdefinierte Daten übergeben, die zum Vorfüllen von Checklisten für den Benutzer vorausgefüllt werden sollen. Der Hauptunterschied ist, dass wir diese Informationen (dargestellt durch ein JSON Dokument) in diese URL packen müssen, da dies die einzigen Informationen sind, die iCL Filler erhält. Dazu müssen wir das JSON-Dokument mit url kodieren das JSON-Dokument und übergeben es als Query-String-Parameter p der URL.

NameTypeRequired?Description
externalIdstringrequiredMuss ein eindeutiger Bezeichner sein, der von der externen Anwendung bereitgestellt wird.
titlestringrequiredDer Titel der Aufgabe.
teamNamestringerforderlichDer Name des Teams, mit dem die Aufgabe verknüpft werden soll. Damit dies funktioniert, müssen die Teamnamen eindeutig sein.
workbookNamestringrequiredDer Name der Arbeitsmappe, die zu dieser Aufgabe gehört. Damit dies funktioniert, müssen die Namen der Arbeitsmappen eindeutig sein.
assignedUserNamestringrequiredDer eindeutige Benutzername des Benutzers, der diese Aufgabe ausführen soll. (d.h. der Benutzername des Prüfers) Sie können auch die E-Mail-Adresse des Prüfers angeben.
descriptionstringEine optionale Beschreibung der Aufgabe.
startDatestringEin optionales Startdatum für die Aufgabe. Hinweis: Datumsangaben müssen als UTC und als gültige ISO 8601 Datumszeichenfolge angegeben werden. Format: yyyy-MM-ddTHH:mm:ss.fffZ Beispiel: 2015-12-29T23:00:00.000Z
duedatestringEin optionales Duedatum für die Aufgabe. Hinweis: Datumsangaben müssen als UTC und als gültige ISO 8601-Datumszeichenfolge angegeben werden. Format: yyyy-MM-ddTHH:mm:ss.fffZ Beispiel: 2015-12-29T23:00:00.000Z
itemsToInspectstring[]Wenn eine Arbeitsmappe erstellt wird, um einen bestimmten Inhaltstyp (z.B. ein Gebäude) zu prüfen, dann können Sie die Aufgabe angeben, welches Gebäude geprüft werden soll. Geben Sie ein Array von Strings an, wobei jeder Wert entweder die externalid eines Inhaltselements oder seine interne contentitemid sein kann (die id, die Sie von der api/content/<contenttypename> api erhalten)
`<beliebige andere Eigenschaft>string/number/booleanWenn ein Feld keinem der zuvor definierten Namen entspricht, wird es als benutzerdefinierte Eigenschaft der Aufgabe betrachtet und im iCL Portal gespeichert (siehe Feld "category" im folgenden Beispiel) Hinweis: 1) Datumsangaben müssen als UTC und als gültige ISO 8601 Datumszeichenfolge angegeben werden. Format: yyyy-MM-ddTHH:mm:ss.fffZ Beispiel: 2015-12-29T23:00:00.000Z 2) Zahlen müssen als gültige JSON-Zahlen angegeben werden: Beispiel: { "numberfield":33.2 } 3) Boolesche Werte müssen als gültige JSON-Boolesche Werte angegeben werden Beispiel: { "istrue" : true }

Bemerkungen:

  • Alle Aufgaben, die über diese Schnittstelle hinzugefügt werden, werden automatisch veröffentlicht.
  • Das json-Objekt kann jedes andere Feld enthalten, das von iCL Portal als benutzerdefinierte Eigenschaft der Aufgabe gespeichert wird. gegebenen Aufgabe gespeichert wird. (siehe Feld "Kategorie" im obigen Beispiel)

Ein JSON-Beispiel würde wie folgt aussehen:

{
"externalId": "TASK_0001",
"title": "New Task",
"teamName": "team01",
"workbookName": "physical_inspection",
"assignedUserName": "Peter Parker",
"description": "Description",
"startDate": "2015-12-28T23:00:00.000Z",
"dueDate": "2015-12-29T23:00:00.000Z",
"category": "severe_defects",
"itemsToInspect": []
}

Beachten Sie das benutzerdefinierte Feld " category". Immer wenn iCL Filler eine Inspektion auf der Grundlage dieser Aufgabe (oder eine neue Checkliste innerhalb dieser Inspektion), versucht iCL Filler, ein Checklistenfeld "category" zu finden, und wenn er eines findet, befüllt er es mit "severe_defects". Beachten Sie auch, dass wir keine "itemsToInspect" übergeben haben. Der Hauptunterschied zwischen dieser API und der iCL Portal REST-Schnittstelle besteht darin, dass iCL Filler, wenn wir dies hier tun würden und diese Elemente nicht existieren, sie tatsächlich erstellen würde. Um diese Informationen zusammen mit der URL weiterzugeben, müssen Sie sie zuerst als URL kodieren. Wenn Sie kein Programmierer sind, können Sie die folgende nützliche Website verwenden: https://meyerweb.com/eric/tools/dencoder/

In unserem Fall würde es wie folgt aussehen:

%7B%0A%09%22externalId%22%3A%20%22TASK_0001%22%2C%0A%09%22title%22%3A%20%22New%20Task%22%2C%0A%09%22teamName%22%3A%20%22team01%22%2C%0A%09%22workbookName%22%3A%20%22physical_inspection%22%2C%0A%09%22assignedUserName%22%3A%20%22Perter%20Parker%22%2C%0A%09%22description%22%3A%20%22Description%22%2C%0A%09%22startDate%22%3A%20%222015-12-28T23%3A00%3A00.000Z%22%2C%0A%09%22dueDate%22%3A%20%222015-12-29T23%3A00%3A00.000Z%22%2C%0A%09%22category%22%3A%20%22severe_defects%22%2C%0A%09%22itemsToInspect%22%3A%20%5B%5D%0A%7D%0A

Der resultierende Link sieht also wie folgt aus:

https://filler.opti-q.com?$action=openorcreatetask&=%7B%0A%09%22externalId%22%3A%20%22TASK_0001%22%2C%0A%09%22title%22%3A%20%22New%20Task%22%2C%0A%09%22teamName%22%3A%20%22team01%22%2C%0A%09%22workbookName%22%3A%20%22physical_inspection%22%2C%0A%09%22assignedUserName%22%3A%20%22Perter%20Parker%22%2C%0A%09%22description%22%3A%20%22Description%22%2C%0A%09%22startDate%22%3A%20%222015-12-28T23%3A00%3A00.000Z%22%2C%0A%09%22dueDate%22%3A%20%222015-12-29T23%3A00%3A00.00Z%22%2C%0A%09%22category%22%3A%20%22severe_defects%22%2C%0A%09%22itemsToInspect%22%3A%20%5B%5D%0A%7D%0A

Hinweis

Wenn Sie diese Offline-API verwenden, können Sie keine Aufgabe für einen anderen Benutzer erstellen, sondern nur für denjenigen, der gerade angemeldet ist.

Beispiel

Peter ist bei iCL Filler angemeldet, aber der Link versucht, eine Aufgabe für Sabrina zu erstellen. iCL Filler wird den zugewiesenen Benutzer Sabrina einfach ignorieren und die Aufgabe trotzdem für Peter erstellen.

Hinweis

Falls Sie eine oder mehrere Objekt-IDs in itemsToInspect angeben, versucht iCL Filler, diese zuerst zu finden, bevor er sie tatsächlich erstellt. Wenn er sie erstellen muss, muss er irgendwie einen Inhaltstyp auswählen. Da dieser nicht aus einer einfachen ID ableitbar ist, wird er den ersten inspizierbaren Inhaltstyp verwenden, den er in der Arbeitsmappe findet.

Hinweis

Wenn Sie das Android SDK auf Ihrem Computer installiert und den Entwicklermodus auf Ihrem Gerät eingerichtet haben, können Sie die ADB-Befehlsshell verwenden, um diese Funktion zu testen.

Starten Sie dazu einfach ADB und führen Sie den Befehl wie folgt aus:

adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://filler.opti-q.com?\$action=openorcreatetask\&p=%7B%0A%09%22externalId%22%3A%20%22TASK_0001%22%2C%0A%09%22title%22%3A%20%22New%20Task%22%2C%0A%09%22teamName%22%3A%20%22team01%22%2C%0A%09%22workbookName%22%3A%20%22physical_inspection%22%2C%0A%09%22assignedUserName%22%3A%20%22Perter%20Parker%22%2C%0A%09%22description%22%3A%20%22Description%22%2C%0A%09%22startDate%22%3A%20%222015-12-28T23%3A00%3A00.000Z%22%2C%0A%09%22dueDate%22%3A%20%222015-12-29T23%3A00%3A00.00Z%22%2C%0A%09%22category%22%3A%20%22severe_defects%22%2C%0A%09%22itemsToInspect%22%3A%20%5B%5D%0A%7D%0A"

Beachten Sie, dass wir die Sonderzeichen $ und & mit einem Backslash \ entschlüsseln mussten, da dies von der ADB verlangt wird.

Umgehung der Inhaltselementerstellung seit der gefilterten Synchronisationsfunktion

Seit der Einführung der gefilterten Synchronisation werden nicht mehr alle Inhaltselemente lokal gespeichert. Wenn die Inhaltselemente noch nicht lokal gespeichert sind, dann werden diese erstellt, wenn wir einige itemsToInspect angeben.

Wenn die Inhaltselemente bereits im iCL-Portal vorhanden sind, kommt es zu Duplikaten.

Es ist möglich, die Erstellung von doppelten und leeren Inhaltselementen zu umgehen, indem eine Aktion an den Deeplink angehängt wird: &createContentItems=false. Anstatt Duplikate zu erstellen, zeigt der Filler eine Meldung an, die den Inspektor auffordert, die Synchronisierung zu wiederholen, da einige Inhaltselemente noch nicht synchronisiert sind. Wenn die Aktion nicht angegeben wird, ist der Wert standardmäßig true. Die Aktion muss weder kodiert noch dekodiert werden.

Die URL mit der Aktion hat das folgende Format:

https://filler.opti-q.com/api/tasks/openorcreate?p=<url_encoded_json_document>&createContentItems=false

oder

https://filler.opti-q.com?$action=openorcreatetask&p=<url_encoded_json_document>&createContentItems=false

Ein JSON-Beispiel mit itemsToInspect würde wie folgt aussehen:

{
"externalId": "TASK_0001",
"title": "New Task",
"teamName": "team01",
"workbookName": "physical_inspection",
"assignedUserName": "Perter Parker",
"description": "Description",
"startDate": "2015-12-28T23:00:00.000Z",
"dueDate": "2015-12-29T23:00:00.000Z",
"category": "severe_defects",
"itemsToInspect": ["externalId1", "externalId2"]
}

Der resultierende Link mit der Aktion sieht also wie folgt aus:

https://filler.opti-q.com?\$action=openorcreatetask\&p=%7B%0A%22externalId%22%3A%20%22TASK_0001%22%2C%0A%22title%22%3A%20%22New%20Task%22%2C%0A%22teamName%22%3A%20%22team01%22%2C%0A%22workbookName%22%3A%20%22physical_inspection%22%2C%0A%22assignedUserName%22%3A%20%22Perter%20Parker%22%2C%0A%22description%22%3A%20%22Description%22%2C%0A%22startDate%22%3A%20%222015-12-28T23%3A00%3A00.000Z%22%2C%0A%22dueDate%22%3A%20%222015-12-29T23%3A00%3A00.000Z%22%2C%0A%22category%22%3A%20%22severe_defects%22%2C%0A%22itemsToInspect%22%3A%20%5B%22externalId1%22%2C%20%22externalId2%22%5D%0A%7D&createContentItems=false