[jbpm-commits] JBoss JBPM SVN: r2895 - in projects/gwt-console/trunk: rpc/src/main/java/org/jboss/bpm/console/server/gson and 4 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Nov 12 15:07:07 EST 2008


Author: heiko.braun at jboss.com
Date: 2008-11-12 15:07:07 -0500 (Wed, 12 Nov 2008)
New Revision: 2895

Modified:
   projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/jbpm3/TokenReference.java
   projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/server/gson/GsonFactory.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/Transform.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java
Log:
Offer available signals when working on tokens

Modified: projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/jbpm3/TokenReference.java
===================================================================
--- projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/jbpm3/TokenReference.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/jbpm3/TokenReference.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -24,6 +24,8 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import java.util.Set;
 import java.util.HashSet;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -32,15 +34,43 @@
 public class TokenReference
 {
    private long id;
+   private String name;
+
+   private String currentNodeName;
+
    private Set<TokenReference> children = new HashSet<TokenReference>();
+   private List<String> availableSignals = new ArrayList<String>();
 
-   public TokenReference(long id)
+   public TokenReference(long id, String name, String nodeName)
    {
       this.id = id;
+      this.name = name!=null ? name : "";
+      this.currentNodeName = nodeName;
    }
 
+   public long getId()
+   {
+      return id;
+   }
+
+   public String getName()
+   {
+      return name;
+   }
+
    public Set<TokenReference> getChildren()
    {
       return children;
    }
+
+   public List<String> getAvailableSignals()
+   {
+      return availableSignals;
+   }
+
+   public String getCurrentNodeName()
+   {
+      return currentNodeName;
+   }
+
 }

Modified: projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/server/gson/GsonFactory.java
===================================================================
--- projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/server/gson/GsonFactory.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/server/gson/GsonFactory.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -32,7 +32,7 @@
    public static Gson createInstance()
    {
       Gson gson = new GsonBuilder()
-        .setDateFormat("y-M-d HH:mm:ss")
+        .setDateFormat("yyyy-M-d HH:mm:ss")
         .registerTypeAdapter(java.sql.Timestamp.class, new SQLDateTypeAdapter()) 
         .create();
       return gson;

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/Transform.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/Transform.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/Transform.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -61,7 +61,7 @@
 
    private static TokenReference tokenReference(Token t0)
    {
-      TokenReference rootToken = new TokenReference(t0.getId());
+      TokenReference token = new TokenReference(t0.getId(), t0.getName(), t0.getNode().getName());
 
       Map children = t0.getChildren();
       if(children!=null)
@@ -69,10 +69,18 @@
          for(Object o : children.values())
          {
             Token t1 = (Token)o;
-            rootToken.getChildren().add( Transform.tokenReference(t1) );
+            token.getChildren().add( Transform.tokenReference(t1) );
          }
       }
-      return rootToken;
+
+      // signals
+      for(Object tr0  : t0.getNode().getLeavingTransitionsList())
+      {
+         Transition transition = (Transition)tr0;
+         token.getAvailableSignals().add(transition.getName());
+      }
+
+      return token;
    }
 
    public static void doTransition(org.jbpm.graph.exe.ProcessInstance p0, String nextState)

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -24,6 +24,7 @@
 import com.google.gwt.json.client.*;
 import org.jboss.bpm.console.client.model.forms.FieldDef;
 import org.jboss.bpm.console.client.model.forms.FormDef;
+import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
 import org.jboss.bpm.console.client.util.JSONWalk;
 
 import java.util.ArrayList;
@@ -179,6 +180,7 @@
 
    public static ProcessInstance parseProcessInstance(JSONObject root)
    {
+      //Log.debug("parse " + root);
 
       long id = JSONWalk.on(root).next("instanceId").asLong();
       long parentId = JSONWalk.on(root).next("parentId").asLong();
@@ -191,10 +193,44 @@
 
       boolean suspended = JSONWalk.on(root).next("suspended").asBool();
 
-      return new ProcessInstance(
+      ProcessInstance processInstance = new ProcessInstance(
             id, parentId,
             start, end,
             suspended
       );
+
+      // tokens
+      JSONObject tokJso = JSONWalk.on(root).next("rootToken").asObject();
+      TokenReference rootToken = parseTokenReference(tokJso);
+      processInstance.setRootToken(rootToken);
+      return processInstance;
    }
+
+   public static TokenReference parseTokenReference(JSONObject jso)
+   {
+      long rootTokenId = JSONWalk.on(jso).next("id").asLong();
+      String name = JSONWalk.on(jso).next("name").asString();
+      String nodeName = JSONWalk.on(jso).next("currentNodeName").asString();
+      TokenReference rt = new TokenReference(rootTokenId, name, nodeName);
+
+      JSONArray signals = JSONWalk.on(jso).next("availableSignals").asArray();
+      for(int i=0; i<signals.size(); i++)
+      {
+         JSONValue jsonValue = signals.get(i);
+         if(jsonValue.toString().equals("null"))
+            continue; // TODO: JBPM-1828
+         JSONString item = jsonValue.isString();
+         rt.getAvailableSignals().add(item.stringValue());
+      }
+
+      JSONArray childArr = JSONWalk.on(jso).next("children").asArray();
+      for(int i=0; i<childArr.size(); i++)
+      {
+         JSONObject item = childArr.get(i).isObject();
+         rt.getChildren().add(parseTokenReference(item));   
+      }
+
+      return rt;
+   }
+
 }

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -48,7 +48,7 @@
 
    private Map<Integer, ProcessInstance> row2InstanceMap = new HashMap<Integer, ProcessInstance>();
    private ProcessDefinition parent;
-   private static final String DATE_FORMAT = "y-m-j H:i:s";  //08-10-02 13:51:27
+   private static final String DATE_FORMAT = "yyyy-m-j H:i:s";  //08-10-02 13:51:27
 
    public ProcessInstanceList(ProcessDefinition procDef, String titleName, MainView view)
    {
@@ -178,13 +178,6 @@
 
    public static ProcessInstance transform(Record r)
    {
-      /*ProcessInstance processInstance = new ProcessInstance(
-        Long.valueOf(r.getAsString("instanceId")),
-        Long.valueOf( r.getAsString("parentId")),
-        r.getAsDate("startDate"),
-        r.getAsDate("endDate"),
-        r.getAsBoolean("suspended"));*/
-
       ProcessInstance processInstance = null;
       try
       {
@@ -210,7 +203,7 @@
             //new ColumnConfig("Key", "key", 50, true),
             new ColumnConfig("State", "state", 100, true, null, "expand"),
             new ColumnConfig("Start Date", "startDate", 125, true, new DateRenderer("startDate")),
-            new ColumnConfig("End Date", "endDate", 125, true, new DateRenderer("endDate"))
+            //new ColumnConfig("End Date", "endDate", 125, true, new DateRenderer("endDate"))
           }
       );
 

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -23,31 +23,34 @@
 
 import com.allen_sauer.gwt.log.client.Log;
 import com.google.gwt.http.client.*;
+import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.user.client.ui.ListBox;
 import com.gwtext.client.core.EventObject;
 import com.gwtext.client.core.Position;
-import com.gwtext.client.data.Record;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.PaddedPanel;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.data.*;
+import com.gwtext.client.widgets.*;
 import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.form.DateField;
-import com.gwtext.client.widgets.form.FieldSet;
-import com.gwtext.client.widgets.form.FormPanel;
-import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.form.*;
 import com.gwtext.client.widgets.grid.RowSelectionModel;
 import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
 import com.gwtext.client.widgets.layout.ColumnLayout;
 import com.gwtext.client.widgets.layout.ColumnLayoutData;
-import com.gwtext.client.widgets.layout.FormLayout;
 import org.jboss.bpm.console.client.Editor;
 import org.jboss.bpm.console.client.MainView;
 import org.jboss.bpm.console.client.UIConstants;
 import org.jboss.bpm.console.client.model.ProcessDefinition;
 import org.jboss.bpm.console.client.model.ProcessInstance;
+import org.jboss.bpm.console.client.model.DTOParser;
+import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
+import org.jboss.bpm.console.client.util.JSONWalk;
 import org.jboss.bpm.console.client.widgets.HelpPanel;
 import org.jboss.bpm.console.client.widgets.TeaserPanel;
 
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
  *
@@ -55,12 +58,20 @@
  */
 public class ProcessInstanceListEditor extends Editor
 {
-
+   private MainView view;
    private ProcessDefinition parent;
-   private ProcessInstance selectedInstance;
-   private MainView view;
    private ProcessInstanceList instanceList;
 
+   private FormPanel tokenForm;
+   private Button signalButton;
+   final ArrayReader reader = new ArrayReader(new RecordDef(
+         new FieldDef[]{
+               new StringFieldDef("signal")
+         }
+   ));
+
+   private ProcessInstance selectedInstance;
+
    public ProcessInstanceListEditor(ProcessDefinition proc, MainView view)
    {
       super();
@@ -80,32 +91,33 @@
       leftHand.setFrame(false);
       leftHand.setHeader(false);
       leftHand.setBorder(false);
-      
+
       instanceList = new ProcessInstanceList(
-        proc, "Process Instances", view
+            proc, "Process Instances", view
       );
 
       // ---------------
 
       TabPanel tabPanel = new TabPanel();
       tabPanel.setPaddings(10);
-      tabPanel.setPlain(true);      
+      tabPanel.setPlain(true);
       tabPanel.setActiveTab(0);
       tabPanel.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
 
-      PaddedPanel tabPadding = new PaddedPanel(tabPanel, 0,10,0,10);      
+      PaddedPanel tabPadding = new PaddedPanel(tabPanel, 0,10,0,10);
 
       // ----------------------------------------
 
       Panel detailsForm = assembleDetailsForm();
-      
+      Panel tokenForm = assembleTokenForm();
 
-      tabPanel.add(detailsForm);
-      tabPanel.add( new Panel("Advanced") );
+      tabPanel.add( detailsForm );
+      tabPanel.add( tokenForm );
+
       // ----------------------------------
-      
-      HelpPanel help = new HelpPanel(UIConstants.TEASER_PANEL_WIDTH, 200, "Managing process instances");      
 
+      HelpPanel help = new HelpPanel(UIConstants.TEASER_PANEL_WIDTH, 200, "Managing process instances");
+
       TeaserPanel teaserPanel = new TeaserPanel();
       teaserPanel.add(help);
 
@@ -113,12 +125,77 @@
 
       leftHand.add(instanceList);
       leftHand.add(tabPadding);
-      
+
       this.add(leftHand, new ColumnLayoutData(0.7) );
-      this.add(teaserPanel , new ColumnLayoutData(0.3) );      
+      this.add(teaserPanel , new ColumnLayoutData(0.3) );
 
    }
 
+   private Panel assembleTokenForm()
+   {
+      Panel outerFormPanel = new Panel();
+      outerFormPanel.setTitle("Tokens");
+      outerFormPanel.setBorder(false);
+      outerFormPanel.setFrame(false);
+
+      tokenForm = createBaseFormPanel();
+
+      TextField idField = new TextField("Id", "id", 230);
+      idField.setReadOnly(true);
+      tokenForm.add(idField);
+
+      //tokenForm.add(new TextField("Token Name", "name", 230));
+      TextField nameField = new TextField("Current Node Name", "nodeName", 230);
+      nameField.setReadOnly(true);
+      tokenForm.add(nameField);
+
+
+      MemoryProxy dataProxy = createMemoryProxy(new ArrayList<String>());
+      Store store = new Store(dataProxy, reader);
+      store.load();
+
+      ComboBox cb = new ComboBox();
+      cb.setFieldLabel("Signal");
+      cb.setHiddenName("signal");
+      cb.setStore(store);
+      cb.setDisplayField("signal");
+      cb.setMode(ComboBox.LOCAL);
+      cb.setTriggerAction(ComboBox.ALL);
+      cb.setEmptyText("");
+      cb.setSelectOnFocus(true);
+      cb.setWidth(190);
+      cb.setEditable(false);
+      tokenForm.add(cb);
+
+      signalButton = new Button("Signal",
+            new ButtonListenerAdapter()
+            {
+
+               public void onClick(Button button, EventObject eventObject)
+               {
+                  ComboBox cb = (ComboBox)tokenForm.getForm().findField("signal");
+                  String signalValue = cb.getValueAsString();
+                  if(signalValue.equals(""))
+                     MessageBox.alert("Please select a signal");
+                  else
+                     Log.debug("Singal -> "  + signalValue);  // TODO: integration
+               }
+            }
+      );
+
+      tokenForm.addButton(signalButton);
+      outerFormPanel.add(tokenForm);
+
+      return outerFormPanel;
+   }
+
+   private MemoryProxy createMemoryProxy(List signals)
+   {
+      return new MemoryProxy(
+            new Object[][]{ signals.toArray()}
+      );
+   }
+
    private Panel assembleDetailsForm()
    {
       // ---------------
@@ -130,14 +207,7 @@
 
       // ---------------
 
-      final FormPanel detailsForm = new FormPanel();
-      detailsForm.setLabelAlign(Position.LEFT);
-      detailsForm.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
-      detailsForm.setHeader(false);
-      detailsForm.setFrame(false);
-      detailsForm.setBorder(false);
-      detailsForm.setPaddings(5, 5, 5, 0);
-      detailsForm.setLabelWidth(120);
+      final FormPanel detailsForm = createBaseFormPanel();
 
       // ---------------
 
@@ -145,30 +215,30 @@
       detailsForm.add(new TextField("Key", "key", 230));
       detailsForm.add(new TextField("State", "state", 230));
       detailsForm.add(new DateField("Start Date", "startDate", 230));
-      detailsForm.add(new DateField("End Date", "endDate", 230));
+      //detailsForm.add(new DateField("End Date", "endDate", 230)); 
 
       final Button suspendButton = new Button("Suspend",
-        new ButtonListenerAdapter()
-        {
+            new ButtonListenerAdapter()
+            {
 
-           public void onClick(Button button, EventObject eventObject)
-           {
-              selectedInstance.setState(ProcessInstance.STATE.SUSPENDED);
-              persistStateChange();
-           }
-        }
+               public void onClick(Button button, EventObject eventObject)
+               {
+                  selectedInstance.setState(ProcessInstance.STATE.SUSPENDED);
+                  persistStateChange();
+               }
+            }
       );
 
       final Button resumeButton = new Button("Resume",
-        new ButtonListenerAdapter()
-        {
+            new ButtonListenerAdapter()
+            {
 
-           public void onClick(Button button, EventObject eventObject)
-           {
-              selectedInstance.setState(ProcessInstance.STATE.RUNNING);
-              persistStateChange();
-           }
-        }
+               public void onClick(Button button, EventObject eventObject)
+               {
+                  selectedInstance.setState(ProcessInstance.STATE.RUNNING);
+                  persistStateChange();
+               }
+            }
       );
 
       detailsForm.addButton(suspendButton);
@@ -178,26 +248,30 @@
 
       final RowSelectionModel sm = new RowSelectionModel(true);
       sm.addListener(
-        new RowSelectionListenerAdapter()
-        {
-           public void onRowSelect(RowSelectionModel sm, int rowIndex, Record record)
-           {
-              selectedInstance = ProcessInstanceList.transform(record);
-              if(selectedInstance.isSuspended())
-              {
-                 suspendButton.disable();
-                 resumeButton.enable();
-              }
-              else
-              {
-                 resumeButton.disable();
-                 suspendButton.enable();
-              }
+            new RowSelectionListenerAdapter()
+            {
+               public void onRowSelect(RowSelectionModel sm, int rowIndex, Record record)
+               {
+                  selectedInstance = ProcessInstanceList.transform(record);
 
-              detailsForm.getForm().loadRecord(record);
-              detailsForm.doLayout();
-           }
-        }
+                  if(selectedInstance.isSuspended())
+                  {
+                     suspendButton.disable();
+                     resumeButton.enable();
+                  }
+                  else
+                  {
+                     resumeButton.disable();
+                     suspendButton.enable();
+                  }
+
+                  detailsForm.getForm().loadRecord(record);
+                  detailsForm.doLayout();
+
+                  // token form update
+                  populateTokenForm(selectedInstance);
+               }
+            }
       );
       instanceList.setRowSelectionModel(sm);
 
@@ -205,30 +279,73 @@
       return outerFormPanel;
    }
 
+   /**
+    * on row selection callback    
+    */
+   private void populateTokenForm(ProcessInstance selectedInstance)
+   {
+      TokenReference tok = selectedInstance.getRootToken();
+      Form form = tokenForm.getForm();
+      
+      if(form.findField("id")!=null) // TODO: the fields are not initialized on first callback?
+      {
+         form.findField("id").setRawValue(tok.getId()+"");
+         form.findField("nodeName").setRawValue(tok.getCurrentNodeName());
+
+         // refresh combo box
+         ComboBox cb = (ComboBox)form.findField("signal");
+         cb.reset();
+
+         MemoryProxy dataProxy = createMemoryProxy(tok.getAvailableSignals());
+         Store store = new Store(dataProxy, reader);
+         store.load();
+         cb.setStore(store);
+
+         // suspended instances cannot be signaled
+         if(selectedInstance.isSuspended())
+            signalButton.disable();
+         else
+            signalButton.enable();
+      }
+   }
+
+   private FormPanel createBaseFormPanel()
+   {
+      final FormPanel detailsForm = new FormPanel();
+      detailsForm.setLabelAlign(Position.LEFT);
+      detailsForm.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+      detailsForm.setHeader(false);
+      detailsForm.setFrame(false);
+      detailsForm.setBorder(false);
+      detailsForm.setPaddings(5, 5, 5, 0);
+      detailsForm.setLabelWidth(120);
+      return detailsForm;
+   }
+
    private void persistStateChange()
    {
       RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, view.getUrlBuilder().getStateChangeURL(
-        selectedInstance.getInstanceId(), selectedInstance.getState())
+            selectedInstance.getInstanceId(), selectedInstance.getState())
       );
 
       try
       {
          rb.sendRequest(null,
-           new RequestCallback() {
+               new RequestCallback() {
 
-              public void onResponseReceived(Request request, Response response)
-              {
-                 // testSuccess
-                 instanceList.reloadStore();
-                 selectedInstance = null;
-              }
+                  public void onResponseReceived(Request request, Response response)
+                  {
+                     // testSuccess
+                     instanceList.reloadStore();
+                     selectedInstance = null;
+                  }
 
-              public void onError(Request request, Throwable t)
-              {
-                 // Unknown error
-                 Log.error("Unknown error", t);                 
-              }
-           });
+                  public void onError(Request request, Throwable t)
+                  {
+                     // Unknown error
+                     Log.error("Unknown error", t);
+                  }
+               });
       }
       catch (RequestException e1)
       {

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java	2008-11-12 16:51:13 UTC (rev 2894)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java	2008-11-12 20:07:07 UTC (rev 2895)
@@ -21,16 +21,15 @@
  */
 package org.jboss.bpm.console.client.util;
 
+import com.google.gwt.json.client.JSONArray;
+import com.google.gwt.json.client.JSONException;
 import com.google.gwt.json.client.JSONObject;
 import com.google.gwt.json.client.JSONValue;
-import com.google.gwt.json.client.JSONException;
-import com.google.gwt.json.client.JSONArray;
+import org.jboss.bpm.console.client.model.util.SimpleDateFormat;
 
+import java.util.Date;
 import java.util.Iterator;
-import java.util.Date;
 
-import org.jboss.bpm.console.client.model.util.SimpleDateParser;
-
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
  */
@@ -148,7 +147,8 @@
            {
               if(value.isString()!=null)
               {
-                 return SimpleDateParser.parse(value.isString().stringValue(), "dd-MM-yy HH:mm:ss");
+                 SimpleDateFormat df = new SimpleDateFormat();
+                 return df.parse(value.isString().stringValue());                 
               }
               else
               {




More information about the jbpm-commits mailing list