From b9402204384bb5cfc25e6038d2f976f9f0c16fba Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Mon, 18 Nov 2013 09:53:33 +0100 Subject: 3.0-SNAPSHOT IssueID #28 --- .../lifecycle/desc/ElemActDefOutcomeHandler.java | 20 +++--- .../gui/lifecycle/desc/WfVertexDefFactory.java | 2 +- .../gui/lifecycle/instance/ActivityRenderer.java | 25 +++----- .../gui/lifecycle/instance/TransitionPanel.java | 75 +++++++++++++++------- .../gui/lifecycle/instance/WfVertexFactory.java | 2 +- 5 files changed, 72 insertions(+), 52 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/lifecycle') diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java index b7398fe..08cbf4c 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/ElemActDefOutcomeHandler.java @@ -118,18 +118,18 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out public static void exportAct(File dir, BufferedWriter imports, ActivityDef actDef) throws Exception { // Export associated schema - exportSchema((String)actDef.getProperties().get("SchemaType"), (String)actDef.getProperties().get("SchemaVersion"), imports, new File(dir, "OD")); + exportSchema((String)actDef.getProperties().get("SchemaType"), Integer.parseInt(actDef.getProperties().get("SchemaVersion").toString()), imports, new File(dir, "OD")); // Export associated script - exportScript((String)actDef.getProperties().get("ScriptName"), (String)actDef.getProperties().get("ScriptVersion"), imports, new File(dir, "SC")); + exportScript((String)actDef.getProperties().get("ScriptName"), Integer.parseInt(actDef.getProperties().get("ScriptVersion").toString()), imports, new File(dir, "SC")); //Export child act if composite if (actDef instanceof CompositeActivityDef) { CompositeActivityDef compActDef = (CompositeActivityDef)actDef; for (int i=0; iboot/CA/"+compActDef.getActName()+".xml\n"); + imports.write("boot/CA/"+compActDef.getActName()+".xml\n"); } } else { FileStringUtility.string2File(new File(new File(dir, "EA"), actDef.getActName()+".xml"), Gateway.getMarshaller().marshall(actDef)); - if (imports!=null) imports.write("boot/EA/"+actDef.getActName()+".xml\n"); + if (imports!=null) imports.write("boot/EA/"+actDef.getActName()+".xml\n"); } } - public static void exportScript(String name, String version, BufferedWriter imports, File dir) { + public static void exportScript(String name, Integer version, BufferedWriter imports, File dir) { if (name == null || name.length()==0 || name.contains(":")) return; try { FileStringUtility.string2File(new File(dir, name+".xml"), @@ -160,11 +160,11 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out } } - public static void exportSchema(String name, String version, BufferedWriter imports, File dir) { + public static void exportSchema(String name, Integer version, BufferedWriter imports, File dir) { if (name == null || name.length()==0) return; try { FileStringUtility.string2File(new File(dir, name+".xsd"), - LocalObjectLoader.getSchema(name, Integer.parseInt(version)).schema); + LocalObjectLoader.getSchema(name, version).schema); if (imports!=null) imports.write("boot/OD/"+name+".xsd\n"); } catch (Exception ex) { Logger.error(ex); diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java index fe70678..17b2a38 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java @@ -78,7 +78,7 @@ public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue { try { - act = LocalObjectLoader.getActDef(newName, "last"); + act = LocalObjectLoader.getActDef(newName, 0); } catch (Exception ex) { diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java index 4d7da95..a13d610 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/ActivityRenderer.java @@ -6,11 +6,11 @@ import java.awt.Paint; import java.awt.Polygon; import com.c2kernel.common.GTimeStamp; +import com.c2kernel.common.InvalidDataException; import com.c2kernel.graph.model.GraphPoint; import com.c2kernel.graph.model.Vertex; import com.c2kernel.gui.graph.view.VertexRenderer; import com.c2kernel.lifecycle.instance.Activity; -import com.c2kernel.lifecycle.instance.stateMachine.States; import com.c2kernel.utils.DateUtility; import com.c2kernel.utils.Language; public class ActivityRenderer implements VertexRenderer @@ -37,21 +37,14 @@ public class ActivityRenderer implements VertexRenderer linesOfText[2] = Language.translate(activity.getErrors()); else { - int cs = activity.getCurrentState(); - if (cs == States.WAITING && activity.getActive()) - linesOfText[2] = - Language.translate(States.getStateName(cs)) - + (((Boolean) activity.getProperties().get("Show time")).booleanValue() - ? " " + getWaitTime(activity.getActiveDate()) - : ""); - else if (cs == States.STARTED) - linesOfText[2] = - Language.translate(States.getStateName(cs)) - + (((Boolean) activity.getProperties().get("Show time")).booleanValue() - ? " " + getWaitTime(activity.getStartDate()) - : ""); - else - linesOfText[2] = Language.translate(States.getStateName(cs)); + boolean showTime = activity.getActive() && ((Boolean) activity.getProperties().get("Show time")).booleanValue(); + String stateName = "Invalid State"; + try { + stateName = activity.getStateName(); + } catch (InvalidDataException ex) { } + + linesOfText[2] = + Language.translate(stateName) + (showTime ? " " + getWaitTime(activity.getStateDate()) : ""); } FontMetrics metrics = g2d.getFontMetrics(); diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java index b1406c5..f8cbff2 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java @@ -4,6 +4,7 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Map; import javax.swing.Box; import javax.swing.JButton; @@ -12,6 +13,7 @@ import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; +import com.c2kernel.common.InvalidDataException; import com.c2kernel.entity.agent.Job; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.graph.model.Vertex; @@ -20,9 +22,9 @@ import com.c2kernel.gui.graph.view.SelectedVertexPanel; import com.c2kernel.gui.tabs.EntityTabPane; import com.c2kernel.gui.tabs.execution.Executor; import com.c2kernel.lifecycle.instance.Activity; +import com.c2kernel.lifecycle.instance.stateMachine.State; import com.c2kernel.lifecycle.instance.stateMachine.StateMachine; -import com.c2kernel.lifecycle.instance.stateMachine.States; -import com.c2kernel.lifecycle.instance.stateMachine.Transitions; +import com.c2kernel.lifecycle.instance.stateMachine.Transition; import com.c2kernel.utils.Logger; /************************************************************************** @@ -40,7 +42,7 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen protected GridBagConstraints c; protected Box transBox; protected JComboBox executors; - protected JComboBox states = new JComboBox(States.states); + protected JComboBox states = new JComboBox(); protected JCheckBox active = new JCheckBox(); protected JLabel status = new JLabel(); protected ItemProxy mItem; @@ -106,27 +108,56 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen clear(); if (!(vert instanceof Activity)) return; mCurrentAct = (Activity)vert; - states.setSelectedIndex(mCurrentAct.getCurrentState()); + StateMachine sm; + try { + sm = mCurrentAct.getStateMachine(); + } catch (InvalidDataException e) { + status.setText("Invalid state machine."); + Logger.error(e); + return; + } + states.removeAllItems(); + int currentState; + try { + currentState = mCurrentAct.getState(); + } catch (InvalidDataException e) { + status.setText("Could not find activity state"); + Logger.error(e); + return; + } + for (State thisState : sm.getStates()) { + states.addItem(thisState); + if (currentState == thisState.getId()) + states.setSelectedItem(thisState); + } states.setEnabled(true); active.setSelected(mCurrentAct.active); active.setEnabled(true); Logger.msg(1, "Retrieving possible transitions for activity "+mCurrentAct.getName()); - int[] transitions = mCurrentAct.getMachine().possibleTransition(); - if (transitions.length == 0) { + Map transitions; + try { + transitions = mCurrentAct.getStateMachine().getPossibleTransitions(mCurrentAct, MainFrame.userAgent.getPath()); + } catch (Exception e) { + status.setText("Error loading possible transitions of activity. See log."); + Logger.error(e); + return; + } + + if (transitions.size() == 0) { status.setText("None"); return; } - for (int i = 0; i < transitions.length; i++) { - String trans= Transitions.getTransitionName(transitions[i]); - if (!(transitions[i]==Transitions.DONE) && !(transitions[i]==Transitions.COMPLETE)) { - String buttonLabel = trans.substring(0,1).toUpperCase()+trans.substring(1); - JButton thisTrans = new JButton(buttonLabel); - thisTrans.setActionCommand("Trans:"+String.valueOf(transitions[i])); + + for (Transition trans:transitions.keySet()) { + + if (!trans.hasOutcome() || (trans.hasOutcome() && !trans.getOutcome().isRequired())) { + JButton thisTrans = new JButton(trans.getName()); + thisTrans.setActionCommand("Trans:"+trans.getId()); thisTrans.addActionListener(this); transBox.add(thisTrans); transBox.add(Box.createHorizontalGlue()); } - status.setText(transitions.length+" transitions possible."); + status.setText(transitions.size()+" transitions possible."); } revalidate(); } @@ -138,22 +169,19 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen return; } if (e.getSource() == states && mCurrentAct != null) { - mCurrentAct.getMachine().state = states.getSelectedIndex(); + mCurrentAct.setState(states.getSelectedIndex()); return; } if (!e.getActionCommand().startsWith("Trans:")) return; int transition = Integer.parseInt(e.getActionCommand().substring(6)); Logger.msg("Requesting transition "+transition); - Job thisJob = new Job(mItem.getSystemKey(), - mCurrentAct.getPath(), - transition, - new StateMachine(mCurrentAct).simulate(transition), - mCurrentAct.getCurrentState(), - mCurrentAct.getName(), - mCurrentAct.getProperties(), - mCurrentAct.getType(), - MainFrame.userAgent.getName()); try { + StateMachine actSM = mCurrentAct.getStateMachine(); + Job thisJob = new Job(mCurrentAct, + mItem.getSystemKey(), + actSM.getTransition(transition), + MainFrame.userAgent.getPath(), + "Admin"); Executor selectedExecutor = (Executor)executors.getSelectedItem(); selectedExecutor.execute(thisJob, status); } catch (Exception ex) { @@ -170,7 +198,6 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen mCurrentAct = null; transBox.removeAll(); status.setText("No activity selected"); - states.setSelectedIndex(0); states.setEnabled(false); active.setSelected(false); active.setEnabled(false); diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java index 38e3ec4..e7f0034 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java @@ -78,7 +78,7 @@ public class WfVertexFactory implements VertexFactory, WorkflowDialogue Activity act = null; try { - ActivityDef actD = LocalObjectLoader.getActDef(newName, "last"); + ActivityDef actD = LocalObjectLoader.getActDef(newName, 0); act = (Activity)actD.instantiate(unicName); } catch (Exception e) -- cgit v1.2.3