diff options
Diffstat (limited to 'src/main/java/com/c2kernel/gui/lifecycle/instance')
3 files changed, 61 insertions, 41 deletions
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)
|
