Search in sources :

Example 6 with Processes

use of org.wso2.carbon.bpel.core.ode.integration.jmx.Processes in project carbon-business-process by wso2.

the class ProcessStatisticsService method getAllProcesses.

/**
 * Get all deployed processes
 *
 * @return list with the processDefinitions of all deployed processes
 */
@GET
@Path("/processes/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public ResponseHolder getAllProcesses() {
    // Get a list of the deployed processes
    RepositoryService repositoryService = BPMNOSGIService.getRepositoryService();
    List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().processDefinitionTenantId(getTenantIdStr()).list();
    List<Object> listOfProcesses = new ArrayList<>();
    ResponseHolder response = new ResponseHolder();
    for (ProcessDefinition processDefinition : processDefinitionList) {
        listOfProcesses.add(processDefinition.getId());
    }
    response.setData(listOfProcesses);
    return response;
}
Also used : ResponseHolder(org.wso2.carbon.bpmn.rest.model.stats.ResponseHolder) ArrayList(java.util.ArrayList) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) RepositoryService(org.activiti.engine.RepositoryService) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 7 with Processes

use of org.wso2.carbon.bpel.core.ode.integration.jmx.Processes in project carbon-business-process by wso2.

the class ProcessStatisticsService method getAvgTimeDurationForCompletedProcesses.

/**
 * Get the average time duration of completed processes
 *
 * @return list with the completed processes and the average time duration taken for each process
 */
@GET
@Path("/process-instances/duration/average")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public ResponseHolder getAvgTimeDurationForCompletedProcesses() {
    ResponseHolder response = new ResponseHolder();
    List<Object> list = new ArrayList<>();
    HistoryService historyService = BPMNOSGIService.getHistoryService();
    RepositoryService repositoryService = BPMNOSGIService.getRepositoryService();
    List<ProcessDefinition> deployedProcessList = repositoryService.createProcessDefinitionQuery().processDefinitionTenantId(getTenantIdStr()).list();
    for (ProcessDefinition instance : deployedProcessList) {
        ProcessInstanceAverageInfo bpmnProcessInstance = new ProcessInstanceAverageInfo();
        bpmnProcessInstance.setProcessDefinitionId(instance.getId());
        double totalTime = 0;
        double averageTime;
        String processDefinitionID = instance.getId();
        HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery().processInstanceTenantId(getTenantIdStr()).processDefinitionId(processDefinitionID).finished();
        long instanceCount = historicProcessInstanceQuery.count();
        if (instanceCount != 0) {
            List<HistoricProcessInstance> instanceList = historicProcessInstanceQuery.list();
            for (HistoricProcessInstance completedProcess : instanceList) {
                double timeDurationOfTask = completedProcess.getDurationInMillis();
                double timeInMins = timeDurationOfTask / (1000 * 60);
                totalTime += timeInMins;
            }
            averageTime = totalTime / instanceCount;
            bpmnProcessInstance.setAverageTimeForCompletion(averageTime);
            list.add(bpmnProcessInstance);
        }
    }
    response.setData(list);
    return response;
}
Also used : HistoricProcessInstanceQuery(org.activiti.engine.history.HistoricProcessInstanceQuery) HistoricProcessInstance(org.activiti.engine.history.HistoricProcessInstance) ArrayList(java.util.ArrayList) HistoryService(org.activiti.engine.HistoryService) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) ResponseHolder(org.wso2.carbon.bpmn.rest.model.stats.ResponseHolder) ProcessInstanceAverageInfo(org.wso2.carbon.bpmn.rest.model.stats.ProcessInstanceAverageInfo) RepositoryService(org.activiti.engine.RepositoryService) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 8 with Processes

use of org.wso2.carbon.bpel.core.ode.integration.jmx.Processes in project carbon-business-process by wso2.

the class BPMNDeploymentService method aggregateRemovableProcessInstances.

private void aggregateRemovableProcessInstances(BPMNDeletableInstances bpmnDeletableInstances, String deploymentId, Integer tenantId, ProcessEngine processEngine) throws BPSFault {
    ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
    List<ProcessDefinition> processes = query.processDefinitionTenantId(tenantId.toString()).deploymentId(deploymentId).list();
    for (ProcessDefinition process : processes) {
        if (!constructBPMNInstancesByProcessID(bpmnDeletableInstances, process.getId(), tenantId, processEngine)) {
            String errorMessage = " Failed to undeploy the package. Please delete the instances before undeploying " + "the package";
            throw new BPSFault(errorMessage);
        }
    }
}
Also used : BPSFault(org.wso2.carbon.bpmn.core.BPSFault) ProcessDefinitionQuery(org.activiti.engine.repository.ProcessDefinitionQuery) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition)

Example 9 with Processes

use of org.wso2.carbon.bpel.core.ode.integration.jmx.Processes in project carbon-business-process by wso2.

the class AnalyticsConfigurationService method configureProcessLevelEvents.

@PUT
@Path("/processes/{process_id}")
@Consumes({ MediaType.APPLICATION_JSON })
public void configureProcessLevelEvents(@PathParam("process_id") String processDefinitionId, DataPublisherConfig dataPublisherConfig) {
    try {
        RepositoryService repositoryService = BPMNOSGIService.getRepositoryService();
        ProcessDefinition process = repositoryService.getProcessDefinition(processDefinitionId);
        if (process != null && process instanceof ProcessDefinitionEntity) {
            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) process;
            if (dataPublisherConfig.isEnabled()) {
                List<ExecutionListener> endListeners = processDefinitionEntity.getExecutionListeners(PvmEvent.EVENTNAME_END);
                ExecutionListener processTerminationListener = null;
                for (ExecutionListener listener : endListeners) {
                    if (listener instanceof ProcessTerminationListener) {
                        processTerminationListener = listener;
                        break;
                    }
                }
                if (processTerminationListener == null) {
                    if (log.isDebugEnabled()) {
                        log.debug("Adding process termination listener to process: " + processDefinitionId);
                    }
                    processDefinitionEntity.addExecutionListener(PvmEvent.EVENTNAME_END, new ProcessTerminationListener());
                }
            } else {
                List<ExecutionListener> endListeners = processDefinitionEntity.getExecutionListeners(PvmEvent.EVENTNAME_END);
                ExecutionListener processTerminationListener = null;
                for (ExecutionListener listener : endListeners) {
                    if (listener instanceof ProcessTerminationListener) {
                        processTerminationListener = listener;
                        break;
                    }
                }
                if (processTerminationListener != null) {
                    if (log.isDebugEnabled()) {
                        log.debug("Removing process termination listener from process: " + processDefinitionId);
                    }
                    endListeners.remove(processTerminationListener);
                }
            }
        }
    } catch (Exception e) {
        String msg = "Failed to configure events for process: " + processDefinitionId;
        log.error(msg, e);
        throw new BPMNRestException(msg, e);
    }
}
Also used : ProcessTerminationListener(org.wso2.carbon.bpmn.analytics.publisher.listeners.ProcessTerminationListener) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) BPMNRestException(org.wso2.carbon.bpmn.rest.common.exception.BPMNRestException) ProcessDefinitionEntity(org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity) BPMNRestException(org.wso2.carbon.bpmn.rest.common.exception.BPMNRestException) RepositoryService(org.activiti.engine.RepositoryService) ExecutionListener(org.activiti.engine.delegate.ExecutionListener)

Example 10 with Processes

use of org.wso2.carbon.bpel.core.ode.integration.jmx.Processes in project carbon-business-process by wso2.

the class AnalyticsConfigurationService method configureTaskLevelEvents.

@PUT
@Path("/processes/{process_id}/tasks/{task_id}")
@Consumes({ MediaType.APPLICATION_JSON })
public void configureTaskLevelEvents(@PathParam("process_id") String processDefinitionId, @PathParam("task_id") String taskId, DataPublisherConfig dataPublisherConfig) {
    try {
        RepositoryService repositoryService = BPMNOSGIService.getRepositoryService();
        ProcessDefinition process = repositoryService.getProcessDefinition(processDefinitionId);
        if (process != null && process instanceof ProcessDefinitionEntity) {
            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) process;
            Map<String, TaskDefinition> taskDefinitions = processDefinitionEntity.getTaskDefinitions();
            TaskDefinition taskDefinition = taskDefinitions.get(taskId);
            if (taskDefinition != null) {
                if (dataPublisherConfig.isEnabled()) {
                    List<TaskListener> completionListeners = taskDefinition.getTaskListener(TaskListener.EVENTNAME_COMPLETE);
                    TaskListener taskCompletionListener = null;
                    for (TaskListener listener : completionListeners) {
                        if (listener instanceof TaskCompletionListener) {
                            taskCompletionListener = listener;
                            break;
                        }
                    }
                    if (taskCompletionListener == null) {
                        if (log.isDebugEnabled()) {
                            log.debug("Adding task completion listener to task: " + taskId + " of process: " + processDefinitionId);
                        }
                        taskDefinition.addTaskListener(TaskListener.EVENTNAME_COMPLETE, new TaskCompletionListener());
                    }
                } else {
                    List<TaskListener> completionListeners = taskDefinition.getTaskListener(TaskListener.EVENTNAME_COMPLETE);
                    TaskListener taskCompletionListener = null;
                    for (TaskListener listener : completionListeners) {
                        if (listener instanceof TaskCompletionListener) {
                            taskCompletionListener = listener;
                            break;
                        }
                    }
                    if (taskCompletionListener != null) {
                        if (log.isDebugEnabled()) {
                            log.debug("Removing task completion listener from task: " + taskId + " of process: " + processDefinitionId);
                        }
                        completionListeners.remove(taskCompletionListener);
                    }
                }
            }
        }
    } catch (Exception e) {
        String msg = "Failed to configure events for task: " + taskId + " of process: " + processDefinitionId;
        log.error(msg, e);
        throw new BPMNRestException(msg, e);
    }
}
Also used : TaskCompletionListener(org.wso2.carbon.bpmn.analytics.publisher.listeners.TaskCompletionListener) TaskDefinition(org.activiti.engine.impl.task.TaskDefinition) TaskListener(org.activiti.engine.delegate.TaskListener) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) BPMNRestException(org.wso2.carbon.bpmn.rest.common.exception.BPMNRestException) ProcessDefinitionEntity(org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity) BPMNRestException(org.wso2.carbon.bpmn.rest.common.exception.BPMNRestException) RepositoryService(org.activiti.engine.RepositoryService)

Aggregations

ProcessDefinition (org.activiti.engine.repository.ProcessDefinition)10 ArrayList (java.util.ArrayList)9 RepositoryService (org.activiti.engine.RepositoryService)6 GET (javax.ws.rs.GET)5 Path (javax.ws.rs.Path)5 Produces (javax.ws.rs.Produces)5 ResponseHolder (org.wso2.carbon.bpmn.rest.model.stats.ResponseHolder)5 HistoricProcessInstance (org.activiti.engine.history.HistoricProcessInstance)4 HistoricProcessInstanceQuery (org.activiti.engine.history.HistoricProcessInstanceQuery)4 ProcessEngine (org.activiti.engine.ProcessEngine)3 ProcessDefinitionEntity (org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity)3 OMElement (org.apache.axiom.om.OMElement)3 Iterator (java.util.Iterator)2 ServletConfig (javax.servlet.ServletConfig)2 ServletOutputStream (javax.servlet.ServletOutputStream)2 HttpSession (javax.servlet.http.HttpSession)2 QName (javax.xml.namespace.QName)2 HistoryService (org.activiti.engine.HistoryService)2 RuntimeService (org.activiti.engine.RuntimeService)2 TaskDefinition (org.activiti.engine.impl.task.TaskDefinition)2