Új elem (step) hozzáadása a folyamatszerkesztőben
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 10 Jun 2022 16:36:09 +0000 (18:36 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Wed, 22 Jun 2022 11:57:07 +0000 (13:57 +0200)
server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java
server/user.mediacube.gui/pages/processVisualizer2.zul
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel2.java
server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java

index c3ef4cd70f089269bb51fcb12dfdcdfd38ab86c6..3b1bd739f0c53fdda15e1d261ccee316b91fb08d 100644 (file)
@@ -44,4 +44,5 @@ public interface IJobEngineConfiguration {
 \r
        boolean scheduleExists(String name);\r
 \r
+       ArrayList<String> getSteps();\r
 }\r
index 0b8f315500a2e6d6c6a7f10b41d8bca25274e043..2e984ae62da1e1ea50aa2c317e1a61a5155a7961 100644 (file)
@@ -10,9 +10,13 @@ import java.net.MalformedURLException;
 import java.net.URL;\r
 import java.net.URLClassLoader;\r
 import java.nio.file.FileSystems;\r
+import java.nio.file.FileVisitResult;\r
+import java.nio.file.FileVisitor;\r
 import java.nio.file.Files;\r
 import java.nio.file.Path;\r
 import java.nio.file.Paths;\r
+import java.nio.file.SimpleFileVisitor;\r
+import java.nio.file.attribute.BasicFileAttributes;\r
 import java.nio.file.attribute.DosFileAttributeView;\r
 import java.util.AbstractMap.SimpleEntry;\r
 import java.util.ArrayList;\r
@@ -65,6 +69,7 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        private final Map<String, IJobStepExecutor> executors = new LinkedHashMap<String, IJobStepExecutor>();\r
        private final Map<String, IProgram> programs = new LinkedHashMap<String, IProgram>();\r
        private final ArrayList<Entry<String, BasicDBObject>> schedules = new ArrayList<Entry<String, BasicDBObject>>();\r
+       private ArrayList<String> steps = new ArrayList<String>();\r
        private URLClassLoader stepsClassLoader;\r
        private boolean resetStepClassLoader;\r
        private GroovyClassLoader groovyClassLoader;\r
@@ -248,6 +253,41 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        public void load(IJobEngine jobEngine, boolean autoStart) throws Exception {\r
                loadExecutors(jobEngine, autoStart);\r
                loadSchedules();\r
+               loadSteps();\r
+       }\r
+\r
+       private void loadSteps() {\r
+               FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
+\r
+                       @Override\r
+                       public FileVisitResult visitFileFailed(Path path, IOException exc) throws IOException {\r
+                               return FileVisitResult.CONTINUE;\r
+                       }\r
+\r
+                       @Override\r
+                       public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+                               steps.add(path.getFileName().toString().replace(".java", ""));\r
+                               return FileVisitResult.CONTINUE;\r
+                       }\r
+\r
+                       @Override\r
+                       public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
+                               return FileVisitResult.CONTINUE;\r
+                       }\r
+\r
+                       @Override\r
+                       public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {\r
+                               return FileVisitResult.CONTINUE;\r
+                       }\r
+               };\r
+\r
+               try {\r
+                       Files.walkFileTree(Paths.get(DIR_STEPS), visitor);\r
+               } catch (IOException e) {\r
+                       logger.info("e: {}", e.getCause().toString());\r
+               } catch (Exception e) {\r
+                       logger.info("e: {}", e.getCause().toString());\r
+               }\r
        }\r
 \r
        @Override\r
@@ -602,4 +642,12 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
                resetStepClassLoader = true;\r
        }\r
 \r
+       public ArrayList<String> getSteps() {\r
+               return steps;\r
+       }\r
+\r
+       public void setSteps(ArrayList<String> steps) {\r
+               this.steps = steps;\r
+       }\r
+\r
 }\r
index e6c1d38ab5579e5b4bba8428780a60eba369cff3..571495fbeeac3dd888e8741f830c0a3ce6901f2a 100644 (file)
@@ -1,11 +1,19 @@
 <!DOCTYPE xml>\r
 <zk xmlns:h="xhtml">\r
+       <div viewModel="@id('jem2') @init('user.jobengine.zk.model.JobEditorModel2')" hflex="1">\r
+               <combobox model="@load(jem2.steps)" value="@bind(each)" onChange="@global-command('selectNewStep', evt=event)" >\r
+                       <comboitem label="@load(each)"/>\r
+               </combobox>\r
+               <button viewModel="@id('jfcm2') @init('user.jobengine.zk.model.JobFlowChartModel')" \r
+                       iconSclass="z-icon-plus" onClick="@command('addNewStep')" />\r
+       </div>\r
+       \r
        <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 id="flowchartDataListener" onFlowchartDataChanged="@command('onFlowchartDataChanged')" />\r
-           <button label="Save" onClick="@command('getFlowchartData')"/>\r
+           <button label="Mentés" onClick="@command('getFlowchartData')"/>\r
            <button id="deleteButton" iconSclass="z-icon-trash-o" onClick="@command('onDeletePressed', evt=event)"/>\r
        </div>\r
        <h:script src="/js/diagramflowjs.js" />\r
index 7cd433765866417c9cc7335883d2c2bb431fcec9..cebcd218bcbe54037ddadf5302f3197de0e68515 100644 (file)
@@ -60,6 +60,7 @@ public class JobEditorModel2 extends BaseModel {
        private BasicDBObject editingJob = new BasicDBObject();\r
        private ListModelList<BasicDBObject> selectedJobs;\r
        private ArrayList<String> dataTypes = new ArrayList<String>();\r
+       private ArrayList<String> steps = new ArrayList<String>();\r
        private int numberOfNewParams = 1;\r
 \r
        @AfterCompose\r
@@ -154,7 +155,6 @@ public class JobEditorModel2 extends BaseModel {
 \r
        @NotifyChange({ "editingJob", "selectedJob" })\r
        public void setSelectedJob(BasicDBObject selectedJob) {\r
-               logger.info("setSelectedJob");\r
                if (selectedJob == null) {\r
                        this.selectedJob = null;\r
                        this.editingJob = null;\r
@@ -197,6 +197,7 @@ public class JobEditorModel2 extends BaseModel {
                if (jobEngine == null)\r
                        jobEngine = ComponentBinder.getJobEngine();\r
 \r
+               steps = jobEngine.getJobEngineConfiguration().getSteps();\r
                initJobList();\r
        }\r
 \r
@@ -308,4 +309,12 @@ public class JobEditorModel2 extends BaseModel {
                dataTypes.add("com.ibm.nosql.json.api.BasicDBList");\r
                dataTypes.add("com.ibm.nosql.json.api.BasicDBObject");\r
        }\r
+\r
+       public ArrayList<String> getSteps() {\r
+               return steps;\r
+       }\r
+\r
+       public void setSteps(ArrayList<String> steps) {\r
+               this.steps = steps;\r
+       }\r
 }
\ No newline at end of file
index e82b2d5d0e7c88da41140ac9231771f061c64a10..65a428882304f016d5aa72845781632ad01c39c7 100644 (file)
@@ -13,6 +13,7 @@ import org.zkoss.json.JSONArray;
 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.InputEvent;\r
 import org.zkoss.zk.ui.event.SelectEvent;\r
 import org.zkoss.zk.ui.select.Selectors;\r
 import org.zkoss.zk.ui.util.Clients;\r
@@ -40,6 +41,7 @@ public class JobFlowChartModel extends BaseModel {
        private static final Logger logger = LogManager.getLogger();\r
        private String selectedTabID = "tab0";\r
        private BasicDBObject selectedJob;\r
+       private String selectedNewStep = "";\r
 \r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
@@ -69,6 +71,21 @@ public class JobFlowChartModel extends BaseModel {
                logger.info("converted document: {}", XMLUtils.getStringFromDocument(document));\r
        }\r
 \r
+       @Command\r
+       public void addNewStep() {\r
+               logger.info("addNewStep");\r
+               if (!selectedNewStep.isEmpty()) {\r
+                       Clients.evalJavaScript("model.addNode(new model.node(100, 100, 100, 100, connectorsForStep, \""\r
+                                       + selectedNewStep + "\", \"\", \"RectangleWithGradient\", null, null));\r\n model.draw();");\r
+               }\r
+       }\r
+\r
+       @GlobalCommand\r
+       public void selectNewStep(@BindingParam("evt") InputEvent event) {\r
+               logger.info("selectNewStep");\r
+               selectedNewStep = event.getValue();\r
+       }\r
+\r
        @Command\r
        public void onDeletePressed(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
                Clients.evalJavaScript("deleteSelectedElement();");\r