use of org.apache.ode.bpel.dao.BpelDAOConnection in project carbon-business-process by wso2.
the class InstanceManagementServiceSkeleton method getFailedActivitiesForInstance.
/**
* Get Failed Activities for give instance id.
*
* @param instanceID
* @return
* @throws InstanceManagementException
*/
@Override
public ActivityRecoveryInfoType[] getFailedActivitiesForInstance(final long instanceID) throws InstanceManagementException {
try {
isOperationIsValidForTheCurrentTenant(instanceID);
} catch (IllegalAccessException ex) {
handleError(ex);
}
ActivityRecoveryInfoType[] activityRecoveryInfoTypes = null;
try {
BpelDatabase bpelDb = bpelServer.getODEBPELServer().getBpelDb();
Object result = bpelDb.exec(new BpelDatabase.Callable<Object>() {
public Object run(BpelDAOConnection conn) throws InstanceManagementException {
ProcessInstanceDAO instance = conn.getInstance(instanceID);
Collection<ActivityRecoveryDAO> activityRecoveries = instance.getActivityRecoveries();
return activityRecoveries;
}
});
ArrayList<ActivityRecoveryDAO> activityRecoveryDAOs = (ArrayList<ActivityRecoveryDAO>) result;
if (activityRecoveryDAOs != null) {
activityRecoveryInfoTypes = new ActivityRecoveryInfoType[activityRecoveryDAOs.size()];
for (int i = 0; i < activityRecoveryDAOs.size(); i++) {
ActivityRecoveryDAO activityRecovery = activityRecoveryDAOs.get(i);
ActivityRecoveryInfoType info = new ActivityRecoveryInfoType();
info.setActions(activityRecovery.getActions());
info.setActivityID(activityRecovery.getActivityId());
info.setDateTime(String.valueOf(activityRecovery.getDateTime()));
info.setInstanceID(instanceID);
info.setReason(activityRecovery.getReason());
info.setRetires(activityRecovery.getRetries());
activityRecoveryInfoTypes[i] = info;
}
}
} catch (Exception e) {
String errMsg = "Error occurred while retrieving failed activity information for instance id " + instanceID;
log.error(errMsg, e);
throw new InstanceManagementException(errMsg, e);
}
return activityRecoveryInfoTypes;
}
use of org.apache.ode.bpel.dao.BpelDAOConnection in project carbon-business-process by wso2.
the class InstanceManagementServiceSkeleton method getInstanceInformationWithEvents.
private InstanceInfoWithEventsType getInstanceInformationWithEvents(final long iid) throws InstanceManagementException {
final InstanceInfoWithEventsType instanceInfoWithEvents = new InstanceInfoWithEventsType();
instanceInfoWithEvents.setIid(Long.toString(iid));
dbexec(new BpelDatabase.Callable<Object>() {
public Object run(BpelDAOConnection conn) throws InstanceManagementException {
ProcessInstanceDAO instance = conn.getInstanceEagerly(iid, true);
if (instance == null) {
String errMsg = "Instance " + iid + " not found.";
log.error(errMsg);
throw new InstanceManagementException(errMsg);
}
fillInstanceInfoWithEvents(instanceInfoWithEvents, instance);
return null;
}
});
return instanceInfoWithEvents;
}
use of org.apache.ode.bpel.dao.BpelDAOConnection in project carbon-business-process by wso2.
the class Utils method getInstanceCountForProcess.
/**
* Return the instances in the given processes list
*
* @param processesInPackage
* @return Instance count
* @throws ManagementException
*/
public static long getInstanceCountForProcess(List<QName> processesInPackage) throws ManagementException {
if (processesInPackage != null) {
String filter = null;
for (QName q : processesInPackage) {
if (filter == null) {
filter = "pid=" + q.toString();
} else {
filter += "|" + q.toString();
}
}
try {
final InstanceFilter instanceFilter = new InstanceFilter(filter);
long count = (long) dbexec(new BpelDatabase.Callable<Object>() {
public Object run(BpelDAOConnection conn) {
return conn.instanceCount(instanceFilter);
}
});
return count;
} catch (Exception e) {
String errMsg = "Exception during instance count for deletion. Filter: " + filter;
throw new ManagementException(errMsg, e);
}
} else {
return 0;
}
}
use of org.apache.ode.bpel.dao.BpelDAOConnection in project carbon-business-process by wso2.
the class ProcessManagementServiceSkeleton method addInstanceSummaryEntry.
private void addInstanceSummaryEntry(InstanceSummary instSum, ProcessConf pconf, InstanceStatus state) throws ProcessManagementException {
Instances_type0 instances = new Instances_type0();
instances.setState(state);
String queryStatus = InstanceFilter.StatusKeys.valueOf(state.toString()).toString().toLowerCase();
final InstanceFilter instanceFilter = new InstanceFilter("status=" + queryStatus + " pid=" + pconf.getProcessId());
int count = dbexec(new BpelDatabase.Callable<Integer>() {
public Integer run(BpelDAOConnection conn) throws Exception {
return conn.instanceCount(instanceFilter).intValue();
}
});
instances.setCount(count);
instSum.addInstances(instances);
}
use of org.apache.ode.bpel.dao.BpelDAOConnection in project carbon-business-process by wso2.
the class ProcessManagementServiceSkeleton method addFailuresToInstanceSummary.
private void addFailuresToInstanceSummary(final InstanceSummary instSum, ProcessConf pconf) throws ProcessManagementException {
final FailuresInfo failureInfo = new FailuresInfo();
String queryStatus = InstanceFilter.StatusKeys.valueOf(TInstanceStatus.ACTIVE.toString()).toString().toLowerCase();
final InstanceFilter instanceFilter = new InstanceFilter("status=" + queryStatus + " pid=" + pconf.getProcessId());
dbexec(new BpelDatabase.Callable<Void>() {
public Void run(BpelDAOConnection conn) throws Exception {
Date lastFailureDt = null;
int failureInstances = 0;
for (ProcessInstanceDAO instance : conn.instanceQuery(instanceFilter)) {
int count = instance.getActivityFailureCount();
if (count > 0) {
++failureInstances;
Date failureDt = instance.getActivityFailureDateTime();
if (lastFailureDt == null || lastFailureDt.before(failureDt)) {
lastFailureDt = failureDt;
}
}
}
if (failureInstances > 0) {
failureInfo.setCount(failureInstances);
failureInfo.setFailureDate(AdminServiceUtils.toCalendar(lastFailureDt));
instSum.setFailures(failureInfo);
}
return null;
}
});
}
Aggregations