From c964d8e51537265144129c52c5f7e7c22f3acf71 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Sun, 18 Sep 2022 16:37:58 +0200 Subject: [PATCH] docu, refactoring Issue #70 --- doc/BPMN_EXTENSIONS.md | 8 +++++--- .../java/org/openbpmn/extension/BPMNExtension.java | 7 +++++-- .../extension/DefaultBPMNEventExtension.java | 3 --- .../openbpmn/extension/DefaultBPMNTaskExtension.java | 12 ++++++++++-- .../BPMNApplyPropertiesUpdateOperationHandler.java | 7 +++---- .../java/org/openbpmn/model/BPMNGModelFactory.java | 11 ++++------- .../org/openbpmn/bpmn/elements/BPMNActivity.java | 1 - 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/doc/BPMN_EXTENSIONS.md b/doc/BPMN_EXTENSIONS.md index 8699bc9d..b5feffbe 100644 --- a/doc/BPMN_EXTENSIONS.md +++ b/doc/BPMN_EXTENSIONS.md @@ -48,6 +48,7 @@ This Method is called to generate a JSON Forms Object when the element is loaded You can add a new data field by calling +```java builder.add("myField","someData") uiSchemaBuilder. // addCategory("General"). // @@ -55,25 +56,26 @@ You can add a new data field by calling addElements("name", "category"). // schemaBuilder.addProperty("name", "string", "Please enter your name"); +``` This JsonObjectBuilder is used on the BPMNGmodelFactory to generate the JsonForms ### updatePropertiesData -Updates the properties data provided by the modeling tool in the corresponding BPMN Element +Updates the properties data provided by the modeling tool in the corresponding BPMN Element. The method receives the BPMNElement and a json object containing all new values. An extension can also update the given json object during this operation if needed. ## Register a BPMNExtension To register a BPMNExtension the method `configureBPMNExtensions` of the `BPMNDiagramModule` can be overwritten. In this method you can register new custom Extension: +```java public void configureBPMNExtensions(final Multibinder binding) { // bind BPMN default extensions super.configureBPMNExtensions(binding); // register custom Extensions binding.addBinding().to(MyBPMNTaskExtension.class); - } - +``` diff --git a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/BPMNExtension.java b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/BPMNExtension.java index 1d3bd807..8cd08fb3 100644 --- a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/BPMNExtension.java +++ b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/BPMNExtension.java @@ -120,7 +120,7 @@ default int getPriority() { addCategory("General"). // addLayout(Layout.HORIZONTAL). // addElements("name", "category"). // - + schemaBuilder.addProperty("name", "string", "Please enter your name"); * * } @@ -133,7 +133,10 @@ void buildPropertiesForm(BPMNBaseElement bpmnElement, DataBuilder dataBuilder, S UISchemaBuilder uiSchemaBuilder); /** - * Updates the properties data of a BPMN Element + * Updates the properties data of a BPMN Element. + *

+ * An extension can also update the given json object during this operation if + * needed. * * @param json - a JSON structure representing the data * @param bpmnElement - the BPMN element to be updated diff --git a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNEventExtension.java b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNEventExtension.java index cc9ee32b..c3d843d5 100644 --- a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNEventExtension.java +++ b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNEventExtension.java @@ -80,12 +80,10 @@ public void buildPropertiesForm(final BPMNBaseElement bpmnElement, final DataBui dataBuilder. // addData("name", bpmnElement.getName()). // - addData("rating", "3"). // addData("documentation", bpmnElement.getDocumentation()); schemaBuilder. // addProperty("name", "string", null). // - addProperty("rating", "integer", null). // addProperty("documentation", "string", null); BPMNEvent bpmnEvent = (BPMNEvent) bpmnElement; @@ -97,7 +95,6 @@ public void buildPropertiesForm(final BPMNBaseElement bpmnElement, final DataBui addCategory("General"). // addLayout(Layout.VERTICAL). // addElements("name"). // - addElements("rating"). // addElement("documentation", "Documentation", multilineOption); // check Event Definitions diff --git a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNTaskExtension.java b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNTaskExtension.java index a65ea1b2..b217e280 100644 --- a/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNTaskExtension.java +++ b/open-bpmn.glsp-server/src/main/java/org/openbpmn/extension/DefaultBPMNTaskExtension.java @@ -96,7 +96,7 @@ public void buildPropertiesForm(final BPMNBaseElement bpmnElement, final DataBui BPMNFlowElement taskElement = (BPMNFlowElement) bpmnElement; if (BPMNTypes.SCRIPT_TASK.equals(taskElement.getType())) { dataBuilder // - .addData("scriptformat", "") // + .addData("scriptformat", taskElement.getAttribute("scriptFormat")) // .addData("script", ""); schemaBuilder. // @@ -109,6 +109,9 @@ public void buildPropertiesForm(final BPMNBaseElement bpmnElement, final DataBui addElements("scriptformat"). // addElement("script", "Script", multilineOption); // } + + // update corresponding GModelElement.... + } @Override @@ -123,7 +126,12 @@ public void updatePropertiesData(final JsonObject json, final BPMNBaseElement bp for (String feature : features) { value = json.getString(feature); - logger.fine("...update feature = " + feature); + logger.info("...update feature = " + feature); + + if ("scriptformat".equals(feature)) { + bpmnElement.setAttribute("scriptFormat", value); + continue; + } // TODO implement Event features } diff --git a/open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/operations/BPMNApplyPropertiesUpdateOperationHandler.java b/open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/operations/BPMNApplyPropertiesUpdateOperationHandler.java index 4362d1ba..261cbb8a 100644 --- a/open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/operations/BPMNApplyPropertiesUpdateOperationHandler.java +++ b/open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/operations/BPMNApplyPropertiesUpdateOperationHandler.java @@ -108,21 +108,20 @@ protected void executeOperation(final BPMNApplyPropertiesUpdateOperation operati } // Now call the extensions to update the property data according to the BPMN - // element + // element. The updatePropertiesData can also update the given JSON object! if (extensions != null) { for (BPMNExtension extension : extensions) { // validate if the extension can handle this BPMN element if (extension.handlesBPMNElement(bpmnElement)) { - logger.info("...We need to update the BPMN Element with the extension " + extension.getNamespace()); extension.updatePropertiesData(json, bpmnElement); } } } + // finally we need ot update the JSONFormsData property of the selected element + element.get().getArgs().put("JSONFormsData", json.toString()); logger.info("....execute Update " + operation.getId() + " in " + (System.currentTimeMillis() - l) + "ms"); - // we do not need to reset the modelState here! - // modelState.reset(); } } diff --git a/open-bpmn.glsp-server/src/main/java/org/openbpmn/model/BPMNGModelFactory.java b/open-bpmn.glsp-server/src/main/java/org/openbpmn/model/BPMNGModelFactory.java index a6c84300..7e1bf86b 100644 --- a/open-bpmn.glsp-server/src/main/java/org/openbpmn/model/BPMNGModelFactory.java +++ b/open-bpmn.glsp-server/src/main/java/org/openbpmn/model/BPMNGModelFactory.java @@ -94,12 +94,9 @@ public class BPMNGModelFactory implements GModelFactory { @Override public void createGModel() { - // call extension..... - if (extensions != null) { - System.out.println("-------_> Wir haben " + extensions.size() + " BPMNExtensions :-)"); - - } else { - System.out.println("-------_> Wir haben KEINE BPMNExtension :-((("); + // verify extensions.... + if (extensions == null || extensions.size() == 0) { + logger.warning("no BPMNExtension found! Check DiagramModule->configureBPMNExtensions"); } if (!modelState.isInitalized()) { @@ -126,7 +123,7 @@ public void createGModel() { modelState.setInitalized(true); logger.info("===> createGModel took " + (System.currentTimeMillis() - l) + "ms"); } else { - logger.info("===> createGModel skipped!"); + logger.fine("===> createGModel skipped!"); } } diff --git a/open-bpmn.metamodel/src/main/java/org/openbpmn/bpmn/elements/BPMNActivity.java b/open-bpmn.metamodel/src/main/java/org/openbpmn/bpmn/elements/BPMNActivity.java index deeed67d..2d287be3 100644 --- a/open-bpmn.metamodel/src/main/java/org/openbpmn/bpmn/elements/BPMNActivity.java +++ b/open-bpmn.metamodel/src/main/java/org/openbpmn/bpmn/elements/BPMNActivity.java @@ -3,7 +3,6 @@ import org.openbpmn.bpmn.BPMNModel; import org.openbpmn.bpmn.exceptions.BPMNModelException; import org.w3c.dom.Element; -import org.w3c.dom.Node; /** * An Activity is work that is performed within a Business Process. An Activity