From 704592acfd57a4026f6e1f9b9ced13e277ddbd4c Mon Sep 17 00:00:00 2001 From: Omar Sweidan Date: Fri, 3 Jun 2022 20:57:00 +0200 Subject: [PATCH] =?utf8?q?Folyamatszerkeszt=C5=91=20model=20JSON=20konverz?= =?utf8?q?i=C3=B3ja?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../js/processVisualizer2.js | 5 ++ .../pages/processVisualizer2.zul | 6 +- .../jobengine/zk/model/JobFlowChartModel.java | 89 +++++++++++++++++++ 3 files changed, 98 insertions(+), 2 deletions(-) diff --git a/server/user.mediacube.gui/js/processVisualizer2.js b/server/user.mediacube.gui/js/processVisualizer2.js index f1cdac05..0c2f5a8c 100644 --- a/server/user.mediacube.gui/js/processVisualizer2.js +++ b/server/user.mediacube.gui/js/processVisualizer2.js @@ -108,4 +108,9 @@ function getPressedKey(e) { for (let i = 0; i < variables.length; i++) { model.addVariable(new model.variable(variables[i].name, variables[i].type)); } +} + +function getFlowchartData(){ + console.log("getFlowchartData"); + zk.Widget.$('$flowchartDataListener').fire('onFlowchartDataChanged', { model }, {toServer : true}); } \ No newline at end of file diff --git a/server/user.mediacube.gui/pages/processVisualizer2.zul b/server/user.mediacube.gui/pages/processVisualizer2.zul index cf0ebf0d..7ff56283 100644 --- a/server/user.mediacube.gui/pages/processVisualizer2.zul +++ b/server/user.mediacube.gui/pages/processVisualizer2.zul @@ -3,8 +3,10 @@
-
+
+
+
- + diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java index 8ce2868c..1c4b5ce0 100644 --- a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java +++ b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java @@ -4,9 +4,12 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.zkoss.bind.annotation.AfterCompose; import org.zkoss.bind.annotation.BindingParam; +import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.ContextParam; import org.zkoss.bind.annotation.ContextType; import org.zkoss.bind.annotation.GlobalCommand; +import org.zkoss.json.JSONArray; +import org.zkoss.json.JSONObject; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.SelectEvent; @@ -16,6 +19,20 @@ import org.zkoss.zul.Tab; import com.ibm.nosql.json.api.BasicDBObject; +import user.jobengine.server.ast.CallJobStepCommand; +import user.jobengine.server.ast.CommandSequence; +import user.jobengine.server.ast.DeclarationSequence; +import user.jobengine.server.ast.InputParameter; +import user.jobengine.server.ast.InputParameterSequence; +import user.jobengine.server.ast.JobTemplate; +import user.jobengine.server.ast.OutputParameter; +import user.jobengine.server.ast.OutputParameterSequence; +import user.jobengine.server.ast.ParameterDeclaration; +import user.jobengine.server.ast.ParameterExpression; +import user.jobengine.server.ast.VariableDeclaration; +import user.jobengine.server.ast.VariableExpression; +import user.jobengine.server.ast.VariableName; + public class JobFlowChartModel extends BaseModel { private static final Logger logger = LogManager.getLogger(); private String selectedTabID = "tab0"; @@ -36,6 +53,78 @@ public class JobFlowChartModel extends BaseModel { } } + @Command + public void getFlowchartData() { + Clients.evalJavaScript("getFlowchartData();"); + } + + @Command + public void onFlowchartDataChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) { + logger.info("onFlowchartDataChanged"); + logger.info("template: {}", JSONObjectToJobtemplate((JSONObject) ((JSONObject) event.getData()).get("model")) + .getStringFromTemplate()); + } + + private JobTemplate JSONObjectToJobtemplate(JSONObject data) { + JobTemplate template = new JobTemplate(); + DeclarationSequence ds = new DeclarationSequence(); + template.setDeclarationSequence(ds); + logger.info("template: {}", template.getStringFromTemplate()); + + JSONArray params = (JSONArray) data.get("params"); + for (int i = 0; i < params.size(); i++) { + JSONObject param = (JSONObject) params.get(i); + ds.addDeclaration(new ParameterDeclaration(param.get("name").toString(), param.get("type").toString())); + } + + if (data.get("variables") != null && !((JSONArray) data.get("variables")).isEmpty()) { + JSONArray variables = (JSONArray) data.get("variables"); + for (int i = 0; i < variables.size(); i++) { + JSONObject variable = (JSONObject) variables.get(i); + ds.addDeclaration( + new VariableDeclaration(variable.get("name").toString(), variable.get("type").toString())); + } + } + + CommandSequence cs = new CommandSequence(); + template.setCommandSequence(cs); + JSONArray steps = (JSONArray) data.get("nodes"); + for (int i = 0; i < steps.size(); i++) { + JSONObject node = (JSONObject) steps.get(i); + + if (!node.get("text").toString().isEmpty()) { + JSONArray inputs = (JSONArray) node.get("inputs"); + InputParameterSequence ips = new InputParameterSequence(); + for (int j = 0; j < inputs.size(); j++) { + JSONObject input = (JSONObject) inputs.get(j); + if (input.get("type").toString().equals("param")) { + ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString()))); + } else { + ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString()))); + } + } + + OutputParameterSequence ops = null; + if (node.get("outputs") != null) { + ops = new OutputParameterSequence(); + JSONArray outputs = (JSONArray) node.get("outputs"); + + for (int j = 0; j < outputs.size(); j++) { + ops.addParameter(new OutputParameter(new VariableName(outputs.get(j).toString()))); + } + } + + CallJobStepCommand command = new CallJobStepCommand(); + command.setInputParameterSequence(ips); + command.setOutputParameterSequence(ops); + command.setType(node.get("text").toString().concat("Step.java")); + command.setWeight(1); + template.getCommandSequence().addCommand(command); + } + } + return template; + } + @GlobalCommand public void selectedTabChanged(@BindingParam("evt") SelectEvent event) { logger.info("selectedTabChanged"); -- 2.54.0