01: package org.enhydra.shark.swingclient.workflowadmin.monitoring.actions;
02:
03: import java.awt.event.ActionEvent;
04:
05: import javax.swing.JOptionPane;
06: import javax.transaction.Status;
07: import javax.transaction.UserTransaction;
08:
09: import org.enhydra.shark.api.client.wfmc.wapi.WMProcessInstanceState;
10: import org.enhydra.shark.api.client.wfmc.wapi.WMSessionHandle;
11: import org.enhydra.shark.client.utilities.SharkInterfaceWrapper;
12: import org.enhydra.shark.swingclient.ActionBase;
13: import org.enhydra.shark.swingclient.SharkClient;
14: import org.enhydra.shark.swingclient.workflowadmin.EngineTreeNode;
15: import org.enhydra.shark.swingclient.workflowadmin.monitoring.ProcessMonitor;
16:
17: /**
18: * Starts selected process.
19: *
20: * @author Sasa Bojanic
21: * @version 1.0
22: */
23: public class StartProcess extends ActionBase {
24:
25: public StartProcess(ProcessMonitor pm) {
26: super (pm);
27: }
28:
29: public void actionPerformed(ActionEvent e) {
30: ProcessMonitor pm = (ProcessMonitor) actionPanel;
31:
32: EngineTreeNode dmtn = pm.getSelectedNode();
33: String procId = null;
34: if (dmtn != null
35: && dmtn.getType() == EngineTreeNode.TYPE_PROCESSINSTANCE) {
36: procId = pm.getSelectedNode().getId();
37: }
38: if (procId != null) {
39: UserTransaction ut = null;
40:
41: try {
42: ut = SharkInterfaceWrapper.getUserTransaction();
43: ut.begin();
44: WMSessionHandle shandle = SharkClient
45: .getSessionHandle();
46: SharkInterfaceWrapper.getShark().getWAPIConnection()
47: .changeProcessInstanceState(shandle, procId,
48: WMProcessInstanceState.OPEN_RUNNING);
49:
50: ut.commit();
51: ut.begin();
52: pm.refresh(true);
53: ut.commit();
54: } catch (Exception ex) {
55: try {
56: if (ut.getStatus() != Status.STATUS_NO_TRANSACTION) {
57: ut.rollback();
58: }
59: } catch (Exception _) {
60: }
61: JOptionPane.showMessageDialog(pm.getWindow(), ex
62: .getMessage(), SharkClient.getAppTitle(),
63: JOptionPane.ERROR_MESSAGE);
64: }
65:
66: }
67: }
68: }
|