Skip to content

Commit

Permalink
- BZ-1003978: fixing bulk abort for process instances
Browse files Browse the repository at this point in the history
  • Loading branch information
salaboy committed Sep 4, 2013
1 parent 54d5a99 commit 5f86b28
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 7 deletions.
Expand Up @@ -17,6 +17,7 @@
package org.jbpm.console.ng.bd.service;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.jboss.errai.bus.server.annotations.Remote;

Expand All @@ -28,6 +29,8 @@ public interface KieSessionEntryPoint {
long startProcess(String domainId, String processId, Map<String, String> params);

void abortProcessInstance(long processInstanceId);

void abortProcessInstances(List<Long> processInstanceIds);

void suspendProcessInstance(long processInstanceId);

Expand Down
Expand Up @@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.enterprise.context.ApplicationScoped;
Expand Down Expand Up @@ -78,6 +79,18 @@ public void abortProcessInstance(long processInstanceId) {
ksession.abortProcessInstance(processInstanceId);

}

@Override
public void abortProcessInstances(List<Long> processInstanceIds) {
for(long processInstanceId : processInstanceIds){
ProcessInstanceDesc piDesc = dataService.getProcessInstanceById(processInstanceId);
RuntimeManager runtimesByDomain = deploymentService.getDeployedUnit(piDesc.getDeploymentId()).getRuntimeManager();
// I'm considering Singleton
KieSession ksession = runtimesByDomain.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId))
.getKieSession();
ksession.abortProcessInstance(processInstanceId);
}
}

@Override
public void suspendProcessInstance(long processInstanceId) {
Expand Down
Expand Up @@ -221,8 +221,7 @@ public void onOpen() {
refreshActiveProcessList();
}

public void abortProcessInstance(String processDefId,
long processInstanceId) {
public void abortProcessInstance(long processInstanceId) {
kieSessionServices.call(new RemoteCallback<Void>() {
@Override
public void callback(Void v) {
Expand All @@ -231,7 +230,18 @@ public void callback(Void v) {
}
}).abortProcessInstance(processInstanceId);
}

public void abortProcessInstance(List<Long> processInstanceIds) {
kieSessionServices.call(new RemoteCallback<Void>() {
@Override
public void callback(Void v) {
refreshActiveProcessList();

}
}).abortProcessInstances(processInstanceIds);
}


public void suspendProcessInstance(String processDefId,
long processInstanceId) {
kieSessionServices.call(new RemoteCallback<Void>() {
Expand Down Expand Up @@ -320,18 +330,20 @@ public void execute() {
@Override
public void execute() {
if (view.getSelectedProcessInstances() != null) {

List<Long> ids = new ArrayList<Long>();
for (ProcessInstanceSummary selected : view.getSelectedProcessInstances()) {
if (selected.getState() != ProcessInstance.STATE_ACTIVE) {
view.displayNotification(constants.Aborting_Process_Instance_Not_Allowed() + "(id=" + selected.getId()
+ ")");
continue;
}

abortProcessInstance(selected.getProcessId(), selected.getId());
ids.add(selected.getId());

view.getProcessInstanceListGrid().getSelectionModel().setSelected(selected, false);
view.displayNotification(constants.Aborting_Process_Instance() + "(id=" + selected.getId() + ")");
}
abortProcessInstance(ids);

}
}
}).endMenu().build().getItems().get(0));
Expand Down
Expand Up @@ -254,7 +254,7 @@ public void onCellPreview(final CellPreviewEvent<ProcessInstanceSummary> event)
if (BrowserEvents.CLICK.equalsIgnoreCase(event.getNativeEvent().getType())) {
int column = event.getColumn();
int columnCount = processInstanceListGrid.getColumnCount();
if(column != columnCount - 1){
if(column != 0 && column != columnCount - 1){
ProcessInstanceSummary processInstance = event.getValue();
PlaceRequest placeRequestImpl = new DefaultPlaceRequest( "Process Instances With Details" );
placeRequestImpl.addParameter( "processInstanceId", String.valueOf(processInstance.getId()) );
Expand Down Expand Up @@ -420,7 +420,7 @@ public void execute( ProcessInstanceSummary processInstance ) {
@Override
public void execute( ProcessInstanceSummary processInstance ) {

presenter.abortProcessInstance( processInstance.getProcessId(), processInstance.getId() );
presenter.abortProcessInstance( processInstance.getId() );
}
} ) );

Expand Down

0 comments on commit 5f86b28

Please sign in to comment.