diff options
Diffstat (limited to 'src/main/java/com/c2kernel/gui/lifecycle')
5 files changed, 72 insertions, 52 deletions
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; i<compActDef.getChildren().length; i++) { // export slot defined scripts and schemas
GraphableVertex vert = compActDef.getChildren()[i];
- exportScript((String)vert.getProperties().get("ScriptName"), (String)vert.getProperties().get("ScriptVersion"), imports, new File(dir, "SC"));
- exportScript((String)vert.getProperties().get("RoutingScriptName"), (String)vert.getProperties().get("RoutingScriptVersion"), imports, new File(dir, "SC"));
- exportSchema((String)vert.getProperties().get("SchemaType"), (String)vert.getProperties().get("SchemaVersion"), imports, new File(dir, "OD"));
+ exportScript((String)vert.getProperties().get("ScriptName"), Integer.parseInt(actDef.getProperties().get("ScriptVersion").toString()), imports, new File(dir, "SC"));
+ exportScript((String)vert.getProperties().get("RoutingScriptName"), Integer.parseInt(actDef.getProperties().get("RoutingScriptVersion").toString()), imports, new File(dir, "SC"));
+ exportSchema((String)vert.getProperties().get("SchemaType"), Integer.parseInt(actDef.getProperties().get("SchemaVersion").toString()), imports, new File(dir, "OD"));
}
GraphableVertex[] childDefs = compActDef.getLayoutableChildren();
for (GraphableVertex childDef : childDefs) {
@@ -139,16 +139,16 @@ public class ElemActDefOutcomeHandler extends VertexPropertyPanel implements Out // export marshalled compAct
FileStringUtility.string2File(new File(new File(dir, "CA"), compActDef.getActName()+".xml"), Gateway.getMarshaller().marshall(compActDef));
if (imports!=null) {
- imports.write("<Resource name=\""+compActDef.getActName()+"\" "+(compActDef.getVersion()==null?"":"version=\""+compActDef.getVersion()+"\" ")+"type=\"CA\">boot/CA/"+compActDef.getActName()+".xml</Resource>\n");
+ imports.write("<Resource name=\""+compActDef.getActName()+"\" "+(compActDef.getVersion()==-1?"":"version=\""+compActDef.getVersion()+"\" ")+"type=\"CA\">boot/CA/"+compActDef.getActName()+".xml</Resource>\n");
}
}
else {
FileStringUtility.string2File(new File(new File(dir, "EA"), actDef.getActName()+".xml"), Gateway.getMarshaller().marshall(actDef));
- if (imports!=null) imports.write("<Resource name=\""+actDef.getActName()+"\" "+(actDef.getVersion()==null?"":"version=\""+actDef.getVersion()+"\" ")+"type=\"EA\">boot/EA/"+actDef.getActName()+".xml</Resource>\n");
+ if (imports!=null) imports.write("<Resource name=\""+actDef.getActName()+"\" "+(actDef.getVersion()==-1?"":"version=\""+actDef.getVersion()+"\" ")+"type=\"EA\">boot/EA/"+actDef.getActName()+".xml</Resource>\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("<Resource name=\""+name+"\" "+(version==null?"":"version=\""+version+"\" ")+"type=\"OD\">boot/OD/"+name+".xsd</Resource>\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<Transition, String> 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)
|
