Folyamatszerkesztő model JSON konverziója
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 3 Jun 2022 18:57:00 +0000 (20:57 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 3 Jun 2022 18:57:00 +0000 (20:57 +0200)
server/user.mediacube.gui/js/processVisualizer2.js
server/user.mediacube.gui/pages/processVisualizer2.zul
server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java

index f1cdac05e86dfc9e1169ff70dbb3aaf1e478d227..0c2f5a8cd050292c4a4ad2e3eb2bfaae7846a7a6 100644 (file)
@@ -108,4 +108,9 @@ function getPressedKey(e) {
        for (let i = 0; i < variables.length; i++) {\r
                model.addVariable(new model.variable(variables[i].name, variables[i].type));\r
        }\r
+}\r
+\r
+function getFlowchartData(){\r
+       console.log("getFlowchartData");\r
+       zk.Widget.$('$flowchartDataListener').fire('onFlowchartDataChanged', { model }, {toServer : true});\r
 }
\ No newline at end of file
index cf0ebf0d2bb1aa868abec3b724ffef1c92701f09..7ff562836657bd0c68394e5c2599bddb8dd41f88 100644 (file)
@@ -3,8 +3,10 @@
        <div viewModel="@id('jfcm2') @init('user.jobengine.zk.model.JobFlowChartModel')" vflex="1" hflex="1" >\r
                <div vflex="1" hflex="1" >\r
                <h:canvas id="myCanvas" width="550px" height="550px"/>\r
-           </div>              \r
+           </div>\r
+           <div id="flowchartDataListener" onFlowchartDataChanged="@command('onFlowchartDataChanged')" />\r
+           <button label="Send data to Java" onClick="@command('getFlowchartData')"/>\r
        </div>\r
-       <h:script src="/js/diagramflowjs.js" /> \r
+       <h:script src="/js/diagramflowjs.js" />\r
        <h:script src="/js/processVisualizer2.js" />\r
 </zk>\r
index 8ce2868ccff7e792436cf2b779cf5f20a0e7f812..1c4b5ce0cbd3fbb4f5bc5e182a03fb83763e5784 100644 (file)
@@ -4,9 +4,12 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 import org.zkoss.bind.annotation.AfterCompose;\r
 import org.zkoss.bind.annotation.BindingParam;\r
+import org.zkoss.bind.annotation.Command;\r
 import org.zkoss.bind.annotation.ContextParam;\r
 import org.zkoss.bind.annotation.ContextType;\r
 import org.zkoss.bind.annotation.GlobalCommand;\r
+import org.zkoss.json.JSONArray;\r
+import org.zkoss.json.JSONObject;\r
 import org.zkoss.zk.ui.Component;\r
 import org.zkoss.zk.ui.event.Event;\r
 import org.zkoss.zk.ui.event.SelectEvent;\r
@@ -16,6 +19,20 @@ import org.zkoss.zul.Tab;
 \r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
+import user.jobengine.server.ast.CallJobStepCommand;\r
+import user.jobengine.server.ast.CommandSequence;\r
+import user.jobengine.server.ast.DeclarationSequence;\r
+import user.jobengine.server.ast.InputParameter;\r
+import user.jobengine.server.ast.InputParameterSequence;\r
+import user.jobengine.server.ast.JobTemplate;\r
+import user.jobengine.server.ast.OutputParameter;\r
+import user.jobengine.server.ast.OutputParameterSequence;\r
+import user.jobengine.server.ast.ParameterDeclaration;\r
+import user.jobengine.server.ast.ParameterExpression;\r
+import user.jobengine.server.ast.VariableDeclaration;\r
+import user.jobengine.server.ast.VariableExpression;\r
+import user.jobengine.server.ast.VariableName;\r
+\r
 public class JobFlowChartModel extends BaseModel {\r
        private static final Logger logger = LogManager.getLogger();\r
        private String selectedTabID = "tab0";\r
@@ -36,6 +53,78 @@ public class JobFlowChartModel extends BaseModel {
                }\r
        }\r
 \r
+       @Command\r
+       public void getFlowchartData() {\r
+               Clients.evalJavaScript("getFlowchartData();");\r
+       }\r
+\r
+       @Command\r
+       public void onFlowchartDataChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+               logger.info("onFlowchartDataChanged");\r
+               logger.info("template: {}", JSONObjectToJobtemplate((JSONObject) ((JSONObject) event.getData()).get("model"))\r
+                               .getStringFromTemplate());\r
+       }\r
+\r
+       private JobTemplate JSONObjectToJobtemplate(JSONObject data) {\r
+               JobTemplate template = new JobTemplate();\r
+               DeclarationSequence ds = new DeclarationSequence();\r
+               template.setDeclarationSequence(ds);\r
+               logger.info("template: {}", template.getStringFromTemplate());\r
+\r
+               JSONArray params = (JSONArray) data.get("params");\r
+               for (int i = 0; i < params.size(); i++) {\r
+                       JSONObject param = (JSONObject) params.get(i);\r
+                       ds.addDeclaration(new ParameterDeclaration(param.get("name").toString(), param.get("type").toString()));\r
+               }\r
+\r
+               if (data.get("variables") != null && !((JSONArray) data.get("variables")).isEmpty()) {\r
+                       JSONArray variables = (JSONArray) data.get("variables");\r
+                       for (int i = 0; i < variables.size(); i++) {\r
+                               JSONObject variable = (JSONObject) variables.get(i);\r
+                               ds.addDeclaration(\r
+                                               new VariableDeclaration(variable.get("name").toString(), variable.get("type").toString()));\r
+                       }\r
+               }\r
+\r
+               CommandSequence cs = new CommandSequence();\r
+               template.setCommandSequence(cs);\r
+               JSONArray steps = (JSONArray) data.get("nodes");\r
+               for (int i = 0; i < steps.size(); i++) {\r
+                       JSONObject node = (JSONObject) steps.get(i);\r
+\r
+                       if (!node.get("text").toString().isEmpty()) {\r
+                               JSONArray inputs = (JSONArray) node.get("inputs");\r
+                               InputParameterSequence ips = new InputParameterSequence();\r
+                               for (int j = 0; j < inputs.size(); j++) {\r
+                                       JSONObject input = (JSONObject) inputs.get(j);\r
+                                       if (input.get("type").toString().equals("param")) {\r
+                                               ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString())));\r
+                                       } else {\r
+                                               ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString())));\r
+                                       }\r
+                               }\r
+\r
+                               OutputParameterSequence ops = null;\r
+                               if (node.get("outputs") != null) {\r
+                                       ops = new OutputParameterSequence();\r
+                                       JSONArray outputs = (JSONArray) node.get("outputs");\r
+\r
+                                       for (int j = 0; j < outputs.size(); j++) {\r
+                                               ops.addParameter(new OutputParameter(new VariableName(outputs.get(j).toString())));\r
+                                       }\r
+                               }\r
+\r
+                               CallJobStepCommand command = new CallJobStepCommand();\r
+                               command.setInputParameterSequence(ips);\r
+                               command.setOutputParameterSequence(ops);\r
+                               command.setType(node.get("text").toString().concat("Step.java"));\r
+                               command.setWeight(1);\r
+                               template.getCommandSequence().addCommand(command);\r
+                       }\r
+               }\r
+               return template;\r
+       }\r
+\r
        @GlobalCommand\r
        public void selectedTabChanged(@BindingParam("evt") SelectEvent<Tab, Event> event) {\r
                logger.info("selectedTabChanged");\r