[jbpm-commits] JBoss JBPM SVN: r2962 - in projects/gwt-console/trunk: server/src/main/java/org/jboss/bpm/console/server and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Nov 17 10:34:22 EST 2008
Author: heiko.braun at jboss.com
Date: 2008-11-17 10:34:22 -0500 (Mon, 17 Nov 2008)
New Revision: 2962
Modified:
projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
Log:
End task with signal added
Modified: projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
===================================================================
--- projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -172,6 +172,14 @@
}
}
+ public void close()
+ {
+ if(STATE.IN_PROGRESS != currentState)
+ throw new IllegalArgumentException("Cannot close task in state " + currentState);
+
+ currentState = STATE.CLOSED;
+ }
+
public long getProcessId()
{
return processId;
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -112,8 +112,7 @@
)
{
log.debug("Reassign task " + taskId + " to '" + actorId +"'");
- String actualActor = actorId.equalsIgnoreCase("none") ? null : actorId;
- getTaskDAO().reassignTask(taskId, actualActor);
+ getTaskDAO().reassignTask(taskId, actorId);
return Response.ok().build();
}
@@ -130,7 +129,33 @@
return Response.ok().build();
}
+ @POST
+ @Path("{taskId}/close/transition/default")
+ @Produces("application/json")
+ public Response closeTask(
+ @PathParam("taskId")
+ long taskId
+ )
+ {
+ return closeTaskWithSignal(taskId, null);
+ }
+ @POST
+ @Path("{taskId}/close/transition")
+ @Produces("application/json")
+ public Response closeTaskWithSignal(
+ @PathParam("taskId")
+ long taskId,
+ @QueryParam("signal")
+ String signalName
+ )
+ {
+ log.debug("Close task " + taskId);
+ getTaskDAO().closeTask(taskId, signalName);
+ return Response.ok().build();
+ }
+
+
@GET
@Path("forms/{processId}/{taskId}")
@Produces("application/json")
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -37,4 +37,5 @@
TaskReference getTaskById(long taskId);
void reassignTask(long taskId, String actorId);
+ void closeTask(long taskId, String signalName);
}
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -178,7 +178,7 @@
return (TaskInstance) facade.execute( new GetTaskInstanceCommand(taskId, true, false));
}
- public void assignToAuthenticatedUser(long taskId, String actorId)
+ public void assignTask(long taskId, String actorId)
{
if(actorId!=null)
{
@@ -198,4 +198,13 @@
SignalCommand command = new SignalCommand(tokenId, signalName);
facade.execute(command);
}
+
+ public void endTask(long taskId, String signalName)
+ {
+ TaskInstanceEndCommand command = new TaskInstanceEndCommand();
+ command.setTaskInstanceId(taskId);
+ command.setTransitionName(signalName);
+
+ facade.execute(command);
+ }
}
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -138,6 +138,12 @@
public void reassignTask(long taskId, String actorId)
{
// TODO: validation of actorId?
- delegate.assignToAuthenticatedUser(taskId, actorId);
+ delegate.assignTask(taskId, actorId);
}
+
+
+ public void closeTask(long taskId, String signalName)
+ {
+ delegate.endTask(taskId, signalName);
+ }
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -125,10 +125,20 @@
return getBaseUrl() + "/rs/tasks/forms/"+processId+"/"+taskId;
}
+ public String getTaskEndURL(long id)
+ {
+ return getBaseUrl() + "/rs/tasks/"+id+"/close/transition/default";
+ }
+
+ public String getTaskEndURL(long id, String signalName)
+ {
+ return getBaseUrl() + "/rs/tasks/"+id+"/close/transition?signal=" + URL.encode(signalName);
+ }
+
public String getTaskAssignmentURL(long id, String actor)
{
- String actualActor = actor == null ? "none" : actor;
- return getBaseUrl() + "/rs/tasks/"+id+"/assignment/"+URL.encode(actualActor);
+ String actualActor = actor == null ? "" : "/"+actor;
+ return getBaseUrl() + "/rs/tasks/"+id+"/assignment"+URL.encode(actualActor);
}
public String getTokenSignalUrl(TokenReference tok)
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -24,21 +24,24 @@
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.json.client.JSONObject;
-import com.gwtext.client.core.SortDir;
-import com.gwtext.client.core.Function;
import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Function;
+import com.gwtext.client.core.SortDir;
import com.gwtext.client.data.*;
import com.gwtext.client.data.event.StoreListenerAdapter;
import com.gwtext.client.widgets.*;
-import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.form.*;
import com.gwtext.client.widgets.grid.*;
import com.gwtext.client.widgets.grid.event.GridCellListener;
import org.jboss.bpm.console.client.MainView;
import org.jboss.bpm.console.client.UIConstants;
import org.jboss.bpm.console.client.model.DTOParser;
import org.jboss.bpm.console.client.model.TaskReference;
+import org.jboss.bpm.console.client.model.forms.FormDef;
+import org.jboss.bpm.console.client.util.JSONRequest;
+import org.jboss.bpm.console.client.util.JSONRequestHandler;
import java.util.HashMap;
import java.util.Map;
@@ -58,7 +61,7 @@
private RowSelectionModel rowSelectionModel;
public static final int PAGE_SIZE = 15;
private int selectedRowIndex = -1;
-
+
public TaskList(String titleName, final MainView view)
{
this.mainView = view;
@@ -96,104 +99,6 @@
);
}
- protected void onAdd()
- {
- throw new RuntimeException("Tasks cannot be added manually!");
- }
-
- protected void onDelete(final int row)
- {
- throw new RuntimeException("Tasks cannot be deleted manually!");
- }
-
- protected void onExamine(final int row)
- {
- final TaskReference taskRef = row2taskref.get(row);
- /*String url = view.getUrlBuilder().getTaskFormDefURL(taskRef.getProcessId(), taskRef.getId());
-
- MessageBox.show(new MessageBoxConfig() {
- {
- setMsg("Generate form, please wait.");
- setProgressText("Loading...");
- setWidth(300);
- setWait(true);
- setWaitConfig(new WaitConfig() {
- {
- setInterval(200);
- }
- });
- }
- });
-
- JSONRequest.get(url,
- new JSONRequestHandler() {
-
- public void onRequestComplete(JavaScriptObject json)
- {
- JSONObject root = new JSONObject(json);
- FormDef formDef = null;
- try
- {
- formDef = DTOParser.parseFormDef(root);
- }
- catch (Throwable e)
- {
- Log.error("FormDef parsing failed", e);
- }
-
- MessageBox.hide();
-
- // generate form
- FormPanel formPanel = new FormPanel();
-
- // -----------
-
- FieldSet fieldSet = new FieldSet();
- fieldSet.setLabelWidth(90);
- fieldSet.setTitle(taskRef.getName());
- fieldSet.setAutoHeight(true);
- fieldSet.setBorder(false);
-
- // -----------
- for(org.jboss.bpm.console.client.model.forms.FieldDef fieldDef : formDef.getFields())
- {
- switch(fieldDef.getInputType())
- {
- case TEXT:
- fieldSet.add( new TextField(fieldDef.getLabel(), fieldDef.getVarname()) );
- break;
- case TEXTAREA:
- fieldSet.add( new TextArea(fieldDef.getLabel(), fieldDef.getVarname()));
- break;
- case BOOL:
- fieldSet.add( new Radio(fieldDef.getLabel(), fieldDef.getVarname()));
- break;
- default:
- Log.debug("Unknown input type:" + fieldDef.getInputType());
- }
- }
-
- // -----------
-
- Panel inner = new PaddedPanel(fieldSet, 0, 10, 0, 0);
- formPanel.add(inner);
-
- // -----------
- displayForm(formPanel);
- }
- }
- ); */
- }
-
- private void displayForm(FormPanel formPanel)
- {
- TaskListEditor parent = (TaskListEditor) ComponentMgr.getComponent(TaskListEditor.ID);
- Panel container = parent.getFormContainer();
- container.clear();
- container.add(formPanel);
- container.doLayout();
- }
-
protected void onRecordsLoaded(Record[] records)
{
try
@@ -336,7 +241,7 @@
pagingToolbar.addSeparator();
pagingToolbar.addSpacer();
-
+
return pagingToolbar;
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java 2008-11-17 15:05:43 UTC (rev 2961)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java 2008-11-17 15:34:22 UTC (rev 2962)
@@ -25,13 +25,14 @@
import com.google.gwt.http.client.*;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Position;
-import com.gwtext.client.data.Record;
+import com.gwtext.client.data.*;
import com.gwtext.client.widgets.*;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
-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.ComboBox;
+import com.gwtext.client.widgets.form.Form;
import com.gwtext.client.widgets.grid.RowSelectionModel;
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
import com.gwtext.client.widgets.layout.ColumnLayout;
@@ -42,6 +43,9 @@
import org.jboss.bpm.console.client.model.TaskReference;
import org.jboss.bpm.console.client.widgets.TeaserPanel;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
@@ -60,6 +64,17 @@
private TabPanel tabPanel;
+ private FormPanel formPanel;
+
+
+ public static final String DEFAULT_TRANSITION = "(Default transition)";
+
+ final ArrayReader reader = new ArrayReader(new RecordDef(
+ new FieldDef[]{
+ new StringFieldDef("signal")
+ }
+ ));
+
public TaskListEditor(MainView mainView )
{
super();
@@ -127,13 +142,14 @@
// ----------------------------------
- Panel detailsFormPanel = assembleFormPanel();
+ Panel detailsFormPanel = assembleDetailsForm();
tabPanel.add(detailsFormPanel);
+ tabPanel.add( new Panel("Assignment") );
formContainer = new Panel("Data");
formContainer.setPaddings(10);
formContainer.setBorder(false);
- tabPanel.add(formContainer);
+ //tabPanel.add(formContainer);
leftHand.add(tabPadding);
@@ -159,18 +175,18 @@
return formContainer;
}
- private Panel assembleFormPanel()
+ private Panel assembleDetailsForm()
{
// ---------------
Panel outerFormPanel = new Panel();
- outerFormPanel.setTitle("Assignment");
+ outerFormPanel.setTitle("Task Details");
outerFormPanel.setBorder(false);
outerFormPanel.setFrame(false);
// ---------------
- final FormPanel formPanel = new FormPanel();
+ formPanel = new FormPanel();
formPanel.setLabelAlign(Position.LEFT);
formPanel.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
formPanel.setHeader(false);
@@ -196,7 +212,25 @@
stateField.setReadOnly(true);
formPanel.add(stateField);
- final Button startBtn = new Button("Start Progress",
+ // ----------
+ MemoryProxy dataProxy = createMemoryProxy(new ArrayList<String>());
+ Store store = new Store(dataProxy, reader);
+ store.load();
+
+ ComboBox cb = new ComboBox();
+ cb.setFieldLabel("End 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);
+ formPanel.add(cb);
+
+ final Button startBtn = new Button("Assign current user",
new ButtonListenerAdapter()
{
@@ -208,12 +242,12 @@
return;
}
selectedInstance.setActor(mainView.getUsername());
- persistChanges();
+ reassignTask();
}
}
);
- final Button stopBtn = new Button("Stop",
+ final Button stopBtn = new Button("Release",
new ButtonListenerAdapter()
{
@@ -225,14 +259,57 @@
return;
}
selectedInstance.setActor(null);
- persistChanges();
+ reassignTask();
}
}
);
+ final Button endBtn = new Button("End",
+ new ButtonListenerAdapter()
+ {
+
+ public void onClick(Button button, EventObject eventObject)
+ {
+ if(null==selectedInstance)
+ {
+ MessageBox.alert("Please select a task.");
+ return;
+ }
+
+ selectedInstance.close();
+
+ ComboBox cb = (ComboBox)formPanel.getForm().findField("signal");
+ String signalName = cb.getRawValue();
+ if(signalName.equals(""))
+ MessageBox.alert("Please select a signal to end this task");
+ else
+ endTask(signalName);
+ }
+ }
+ );
+
+
+ /*Button examineButton = new Button("Examine", new ButtonListenerAdapter()
+ {
+ public void onClick(Button button, EventObject e)
+ {
+ if (null == selectedInstance)
+ MessageBox.alert("Please select a process.");
+ else
+ onExamine(selectedInstance);
+ }
+ });
+ examineButton.setTooltip("Examine");
+ formPanel.add(examineButton);
+ */
+
formPanel.addButton(startBtn);
formPanel.addButton(stopBtn);
+
+ formPanel.addButton(endBtn);
+
+
// ----------------
final RowSelectionModel sm = new RowSelectionModel(true);
@@ -242,6 +319,8 @@
public void onRowSelect(RowSelectionModel sm, int rowIndex, Record record)
{
selectedInstance = TaskList.transform(record);
+ Form form = formPanel.getForm();
+ ComboBox signals = (ComboBox)form.findField("signal");
if(!selectedInstance.hasPooledActors())
{
@@ -253,13 +332,26 @@
{
startBtn.disable();
stopBtn.enable();
+ signals.enable();
+ endBtn.enable();
}
else
{
startBtn.enable();
stopBtn.disable();
+ signals.disable();
+ endBtn.disable();
}
+ // refresh combo box
+
+ signals.reset();
+
+ MemoryProxy dataProxy = createMemoryProxy(selectedInstance.getTransitionNames());
+ Store store = new Store(dataProxy, reader);
+ store.load();
+ signals.setStore(store);
+
formPanel.getForm().loadRecord(record);
formPanel.doLayout();
}
@@ -272,7 +364,7 @@
return outerFormPanel;
}
- private void persistChanges()
+ private void reassignTask()
{
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
mainView.getUrlBuilder().getTaskAssignmentURL(
@@ -282,12 +374,53 @@
try
{
- rb.sendRequest(null,
+ rb.sendRequest("",
new RequestCallback() {
public void onResponseReceived(Request request, Response response)
+ {
+ if(200 != response.getStatusCode())
+ Log.error("Failed to reassign task: " + response.getStatusText());
+
+ taskList.reloadStore();
+ selectedInstance = null;
+ }
+
+ public void onError(Request request, Throwable t)
{
- // testSuccess
+ // Unknown error
+ Log.error("Unknown error", t);
+ }
+ });
+ }
+ catch (RequestException e1)
+ {
+ Log.error("Request failed" ,e1);
+ }
+ }
+
+ private void endTask(String signalName)
+ {
+ String taskCloseURL = signalName.equals(DEFAULT_TRANSITION) ?
+ mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId()) :
+ mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId(), signalName);
+
+ RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
+ taskCloseURL
+ );
+
+ Log.debug(taskCloseURL);
+
+ try
+ {
+ rb.sendRequest("",
+ new RequestCallback() {
+
+ public void onResponseReceived(Request request, Response response)
+ {
+ if(200 != response.getStatusCode())
+ Log.error("Failed to end task: " + response.getStatusText());
+
taskList.reloadStore();
selectedInstance = null;
}
@@ -301,8 +434,109 @@
}
catch (RequestException e1)
{
- mainView.setError(e1.getMessage());
- Log.error("Request failed" ,e1);
+ Log.error("Failed to close task", e1);
}
}
+
+ /*protected void onExamine(final TaskReference selectedInstance)
+ {
+ String url = mainView.getUrlBuilder().getTaskFormDefURL(
+ selectedInstance.getProcessId(), selectedInstance.getId());
+
+ MessageBox.show(new MessageBoxConfig() {
+ {
+ setMsg("Generate form, please wait.");
+ setProgressText("Loading...");
+ setWidth(300);
+ setWait(true);
+ setWaitConfig(new WaitConfig() {
+ {
+ setInterval(200);
+ }
+ });
+ }
+ });
+
+ JSONRequest.get(url,
+ new JSONRequestHandler() {
+
+ public void onRequestComplete(JavaScriptObject json)
+ {
+ JSONObject root = new JSONObject(json);
+ FormDef formDef = null;
+ try
+ {
+ formDef = DTOParser.parseFormDef(root);
+ }
+ catch (Throwable e)
+ {
+ Log.error("FormDef parsing failed", e);
+ }
+
+ MessageBox.hide();
+
+ // generate form
+ FormPanel formPanel = new FormPanel();
+
+ // -----------
+
+ FieldSet fieldSet = new FieldSet();
+ fieldSet.setLabelWidth(90);
+ fieldSet.setTitle(selectedInstance.getName());
+ fieldSet.setAutoHeight(true);
+ fieldSet.setBorder(false);
+
+ // -----------
+ for(org.jboss.bpm.console.client.model.forms.FieldDef fieldDef : formDef.getFields())
+ {
+ switch(fieldDef.getInputType())
+ {
+ case TEXT:
+ fieldSet.add( new TextField(fieldDef.getLabel(), fieldDef.getVarname()) );
+ break;
+ case TEXTAREA:
+ fieldSet.add( new TextArea(fieldDef.getLabel(), fieldDef.getVarname()));
+ break;
+ case BOOL:
+ fieldSet.add( new Radio(fieldDef.getLabel(), fieldDef.getVarname()));
+ break;
+ default:
+ Log.debug("Unknown input type:" + fieldDef.getInputType());
+ }
+ }
+
+ // -----------
+
+ Panel inner = new PaddedPanel(fieldSet, 0, 10, 0, 0);
+ formPanel.add(inner);
+
+ // -----------
+ displayForm(formPanel);
+ }
+ }
+ );
+ }
+
+ private void displayForm(FormPanel formPanel)
+ {
+
+ final Window window = new Window();
+ window.setTitle("Task form");
+ window.setClosable(true);
+ window.setWidth(320);
+ window.setHeight(240);
+ window.setPlain(true);
+ window.setCloseAction(Window.HIDE);
+ window.add( formPanel );
+ window.show("");
+ } */
+
+ private MemoryProxy createMemoryProxy(List signals)
+ {
+ if(signals.isEmpty())
+ signals.add(DEFAULT_TRANSITION);
+ return new MemoryProxy(
+ new Object[][]{ signals.toArray()}
+ );
+ }
}
More information about the jbpm-commits
mailing list