2017-06-13 2 views
1

Ich versuche, eine Prozessdefinition aus einer Datei zu implementieren erfolgreich läuft und das neue deploymentId wird ausgedruckt.Camunda Prozessdefinition Deployment via API

Später habe ich versucht, die eingesetzten Prozessdefinitionen mit dem folgenden Code

List<ProcessDefinition> definitions = repositoryService.createProcessDefinitionQuery().list(); 
    System.out.println(definitions.size()); 

Der obige Code läuft erfolgreich zur Liste aber der Ausgang ist immer 0.

ich einige Untersuchungen gemacht habe und festgestellt, dass In der Tabelle ACT_GE_BYTEARRAY existiert ein Eintrag mit der entsprechenden deploymentId und die Spalte BYTES_ enthält den Inhalt der Definitionsdatei.

Ich habe auch festgestellt, dass es keinen entsprechenden Eintrag in ACT_RE_PROCDEF Tabelle gefunden.

Gibt es etwas Unsinn? Aus der API und den Beispielen, die ich gefunden habe, scheint der obige Code zu genügen, oder gibt es einen fehlenden Schritt?

Danke für Ihre Hilfe

Antwort

1

Es scheint, dass Sie die isExecutable Flagge auf Ihrer eingesetzte Prozessdefinition vergessen. Bitte prüfen Sie, ob Ihr Prozessmodell ein isExecutable Flag enthält. Wenn Sie den Camunda-Modellierer verwenden, setzen Sie diese Option einfach im Eigenschaftsfenster des Prozesses.

Wenn Sie #deploy() mit nicht ausführbaren Definitionen aufrufen, wird eine Bereitstellung erstellt, aber die Prozessdefinitionen werden nicht bereitgestellt, da sie nicht ausführbar sind.

In der neuesten Version der camunda-Plattform (7.7) wurde eine neue Methode namens #deployWithResult() zur DeploymentBuilder hinzugefügt. Diese Methode gibt die bereitgestellten Prozessdefinitionen zurück, sodass Sie leicht überprüfen können, ob Prozessdefinitionen bereitgestellt werden.

3

Es stellte sich heraus, dass das Problem zu definitionName(thanks thorben!) verwandt war, wie es zu beiden Enden aufweist, auf .bpmn20.xml oder .bpmn.

Nach weiteren Tests wird das Suffix für folgende definitionName des Codes erforderlich

deploymentBuilder.addInputStream(definitionName, definitionFileInputStream); 

Verlassen der folgenden definitionName ohne Suffix fein

repositoryService.createDeployment().name(definitionName); 
Verwandte Themen