001: package org.enhydra.shark.swingclient.workflowadmin.monitoring.actions;
002:
003: import java.awt.event.ActionEvent;
004: import java.util.HashMap;
005: import java.util.Iterator;
006: import java.util.Map;
007:
008: import javax.swing.JOptionPane;
009: import javax.transaction.Status;
010: import javax.transaction.UserTransaction;
011:
012: import org.enhydra.shark.api.client.wfmc.wapi.WMAttribute;
013: import org.enhydra.shark.api.client.wfmc.wapi.WMAttributeIterator;
014: import org.enhydra.shark.api.client.wfmc.wapi.WMProcessInstance;
015: import org.enhydra.shark.api.client.wfmc.wapi.WMSessionHandle;
016: import org.enhydra.shark.client.utilities.SharkInterfaceWrapper;
017: import org.enhydra.shark.swingclient.ActionBase;
018: import org.enhydra.shark.swingclient.ResourceManager;
019: import org.enhydra.shark.swingclient.SharkClient;
020: import org.enhydra.shark.swingclient.UpdateVariables;
021: import org.enhydra.shark.swingclient.workflowadmin.EngineTreeNode;
022: import org.enhydra.shark.swingclient.workflowadmin.monitoring.ProcessMonitor;
023:
024: /**
025: * Shows a dialog for editing selected process variables.
026: *
027: * @author Sasa Bojanic
028: * @version 1.0
029: */
030: public class ProcessVariables extends ActionBase {
031:
032: public ProcessVariables(ProcessMonitor pm) {
033: super (pm);
034: }
035:
036: public void actionPerformed(ActionEvent e) {
037: ProcessMonitor pm = (ProcessMonitor) actionPanel;
038:
039: EngineTreeNode dmtn = pm.getSelectedNode();
040: String procId = null;
041: if (dmtn != null
042: && dmtn.getType() == EngineTreeNode.TYPE_PROCESSINSTANCE) {
043: procId = pm.getSelectedNode().getId();
044: }
045: if (procId != null) {
046: UserTransaction ut = null;
047:
048: try {
049: ut = SharkInterfaceWrapper.getUserTransaction();
050: ut.begin();
051: WMSessionHandle shandle = SharkClient
052: .getSessionHandle();
053: WMProcessInstance proc = SharkInterfaceWrapper
054: .getShark().getWAPIConnection()
055: .getProcessInstance(shandle, procId);
056: WMAttributeIterator wai = SharkInterfaceWrapper
057: .getShark().getWAPIConnection()
058: .listProcessInstanceAttributes(shandle, procId,
059: null, true);
060: ut.commit();
061: Map procContext = new HashMap();
062: while (wai.hasNext()) {
063: WMAttribute attr = (WMAttribute) wai.next();
064: procContext.put(attr.getName(), attr.getValue());
065: }
066: ut.begin();
067: UpdateVariables upvd = new UpdateVariables(
068: SharkClient.getFrame(),
069: ResourceManager
070: .getLanguageDependentString("DialogUpdateProcessVariables"),
071: proc.getProcessFactoryName(), procContext, null);
072: ut.commit();
073: upvd.showDialog();
074:
075: if (procContext != null && procContext.size() > 0) {
076: ut.begin();
077: Iterator it = procContext.entrySet().iterator();
078: while (it.hasNext()) {
079: Map.Entry me = (Map.Entry) it.next();
080: SharkInterfaceWrapper.getShark()
081: .getWAPIConnection()
082: .assignProcessInstanceAttribute(
083: shandle, procId,
084: me.getKey().toString(),
085: me.getValue());
086: }
087: ut.commit();
088: }
089:
090: } catch (Exception ex) {
091: try {
092: if (ut.getStatus() != Status.STATUS_NO_TRANSACTION) {
093: ut.rollback();
094: }
095: } catch (Exception _) {
096: }
097: JOptionPane.showMessageDialog(pm.getWindow(), ex
098: .getMessage(), SharkClient.getAppTitle(),
099: JOptionPane.ERROR_MESSAGE);
100: }
101: }
102: }
103:
104: }
|