package com.mossle.bpm.web.portal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.List; import javax.annotation.Resource; import com.mossle.api.humantask.HumanTaskConnector; import com.mossle.api.humantask.HumanTaskDTO; import com.mossle.api.tenant.TenantHolder; import com.mossle.bpm.persistence.domain.BpmProcess; import com.mossle.bpm.persistence.manager.BpmProcessManager; import com.mossle.core.auth.CurrentUserHolder; import com.mossle.core.page.Page; import org.activiti.engine.ProcessEngine; import org.activiti.engine.history.HistoricProcessInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("bpm/portal") public class BpmPortalController { private static Logger logger = LoggerFactory .getLogger(BpmPortalController.class); private ProcessEngine processEngine; private BpmProcessManager bpmProcessManager; private CurrentUserHolder currentUserHolder; private TenantHolder tenantHolder; @RequestMapping("runningProcesses") public String runningProcesses() { String userId = currentUserHolder.getUserId(); String tenantId = tenantHolder.getTenantId(); List<HistoricProcessInstance> historicProcessInstances = processEngine .getHistoryService().createHistoricProcessInstanceQuery() .processInstanceTenantId(tenantId).startedBy(userId) .unfinished().list(); StringBuilder buff = new StringBuilder(); buff.append("<table class='table table-hover'>"); buff.append(" <thead>"); buff.append(" <tr>"); buff.append(" <th>编号</th>"); buff.append(" <th>名称</th>"); buff.append(" <th width='20%'> </th>"); buff.append(" </tr>"); buff.append(" </thead>"); buff.append(" <tbody>"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) { buff.append(" <tr>"); buff.append(" <td>" + historicProcessInstance.getBusinessKey() + "</td>"); buff.append(" <td>" + historicProcessInstance.getName() + "</td>"); buff.append(" <td>"); buff.append(" <a href='" + ".." + "/bpm/workspace-viewHistory.do?processInstanceId=" + historicProcessInstance.getId() + "' class='btn btn-xs btn-primary'>详情</a>"); buff.append(" </td>"); buff.append(" </tr>"); } buff.append(" </tbody>"); buff.append("</table>"); return buff.toString(); } @RequestMapping("processes") public String processes() { String tenantId = tenantHolder.getTenantId(); String hql = "from BpmProcess where tenantId=? order by priority"; List<BpmProcess> bpmProcesses = bpmProcessManager.find(hql, tenantId); StringBuilder buff = new StringBuilder(); buff.append("<table class='table table-hover'>"); buff.append(" <thead>"); buff.append(" <tr>"); buff.append(" <th>名称</th>"); buff.append(" <th width='15%'> </th>"); buff.append(" </tr>"); buff.append(" </thead>"); buff.append(" <tbody>"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (BpmProcess bpmProcess : bpmProcesses) { buff.append(" <tr>"); // buff.append(" <td>" + bpmProcess.getName() + "(" + bpmProcess.getCode() + ")</td>"); buff.append(" <td>" + bpmProcess.getName() + "</td>"); buff.append(" <td>"); buff.append(" <a href='" + ".." + "/operation/process-operation-viewStartForm.do?bpmProcessId=" + bpmProcess.getId() + "' class='btn btn-xs btn-primary'>发起</a>"); buff.append(" </td>"); buff.append(" </tr>"); } buff.append(" </tbody>"); buff.append("</table>"); return buff.toString(); } @Resource public void setProcessEngine(ProcessEngine processEngine) { this.processEngine = processEngine; } @Resource public void setBpmProcessManager(BpmProcessManager bpmProcessManager) { this.bpmProcessManager = bpmProcessManager; } @Resource public void setCurrentUserHolder(CurrentUserHolder currentUserHolder) { this.currentUserHolder = currentUserHolder; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }