package com.vci.client.uif.actions.client;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.vci.client.bof.ClientBusinessObject;
|
import com.vci.client.bof.ClientLinkObject;
|
import com.vci.client.common.objects.UserEntityObject;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.client.uif.engine.common.IDataNode;
|
import com.vci.client.workflow.delegate.ProcessCustomClientDelegate;
|
import com.vci.client.workflow.task.ViewWorkfolwHistoryByPlatformDialog;
|
import com.vci.corba.workflow.data.FlowTaskInfo;
|
import com.vci.mw.ClientContextVariable;
|
|
/**
|
* 执行流程 Action
|
* <p>
|
* 执行流程
|
* </p>
|
*
|
* @author liudi
|
*
|
*/
|
public class ViewWorkFlowHistoryAction extends AbstractBusionessOperationAction {
|
|
@Override
|
public String getKey() {
|
return "workflowhistory";
|
}
|
|
@Override
|
public boolean checkHasRight(){
|
// 按BO进行数据权限检查
|
setDataRightCheckType(RightCheckConstants.RIGHT_CHECK_TYPE_B);
|
return super.checkHasRight();
|
}
|
|
/*
|
* (non-Javadoc)
|
*
|
* @see plm.uif.actions.client.BusinessOperationAction#doPost()
|
*/
|
@Override
|
public boolean doPost() {
|
// 获取选择的数据
|
// 数据的实际类型一般为 IDataNode
|
Object[] objs = getDataModel().getSelectObjects();
|
// paramsMap = getButtonParams();
|
IDataNode idn = (IDataNode) objs[0];
|
// 对象id
|
String boOid = "";
|
String boType = "";
|
boOid = getBoOid(boOid, idn);
|
boType = getBoType(boType, idn);
|
|
UserEntityObject userEntityObject = new UserEntityObject();
|
String ip = ClientContextVariable.getInvocationInfo().clientIPInfo;
|
String loginUserName = ClientContextVariable.getInvocationInfo().userName;
|
userEntityObject.setIp(ip);
|
userEntityObject.setUserName(loginUserName);
|
userEntityObject.setModules("");
|
ProcessCustomClientDelegate delegate = new ProcessCustomClientDelegate(
|
userEntityObject);
|
Map<String, String> valueMap = new HashMap<String, String>();
|
|
try {
|
FlowTaskInfo[] flowTaskInfos = delegate.getFlowTaskInfoByDataId(
|
boOid, boType);
|
String[] executionIds = new String[flowTaskInfos.length];
|
List<FlowTaskInfo> flowTaskInfoList = new ArrayList<FlowTaskInfo>();
|
for (FlowTaskInfo flowTaskInfo : flowTaskInfos) {
|
flowTaskInfoList.add(flowTaskInfo);
|
}
|
ComparatorBo comparatorBo = new ComparatorBo();
|
Collections.sort(flowTaskInfoList, comparatorBo);
|
for(int j=0;j<flowTaskInfoList.size();j++){
|
executionIds[j] = flowTaskInfoList.get(j).executionId;
|
}
|
ViewWorkfolwHistoryByPlatformDialog dialog = new ViewWorkfolwHistoryByPlatformDialog(
|
executionIds);
|
dialog.setVisible(true);
|
|
return true;
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return false;
|
}
|
}
|
|
private String getBoType(String boType, IDataNode idn) {
|
if (idn.getMaterObject() instanceof ClientBusinessObject) {
|
boType = ((ClientBusinessObject) idn.getMaterObject()).getBtmName();
|
} else if (idn.getMaterObject() instanceof ClientLinkObject) {
|
if (idn.isForward()) {
|
boType = ((ClientLinkObject) idn.getMaterObject())
|
.getToBTMName();
|
} else {
|
boType = ((ClientLinkObject) idn.getMaterObject())
|
.getFromBTMName();
|
}
|
}
|
return boType;
|
}
|
|
private String getBoOid(String boOid, IDataNode idn) {
|
if (idn.getMaterObject() instanceof ClientBusinessObject) {
|
boOid = ((ClientBusinessObject) idn.getMaterObject()).getOid();
|
} else if (idn.getMaterObject() instanceof ClientLinkObject) {
|
if (idn.isForward()) {
|
boOid = ((ClientLinkObject) idn.getMaterObject()).getToOid();
|
} else {
|
boOid = ((ClientLinkObject) idn.getMaterObject()).getFromOid();
|
}
|
}
|
return boOid;
|
}
|
|
public class ComparatorBo implements Comparator {
|
|
|
@Override
|
public int compare(Object o1, Object o2) {
|
FlowTaskInfo bO0 = (FlowTaskInfo) o1;
|
FlowTaskInfo bO1 = (FlowTaskInfo) o2;
|
|
// 比较创建时间
|
//升序排列
|
int flag = Long.compare(bO0.createTime, bO1.createTime);
|
return flag;
|
}
|
|
}
|
|
// private BusinessObject[] getBusinessObjectsByQuery(String boOid)
|
// throws VCIError {
|
// QueryTemplate taskidqtl = new QueryTemplate();
|
// List<String> list1 = new ArrayList<String>();
|
// list1.add("*");
|
// taskidqtl.setBtmType("WorkItem".toLowerCase());
|
// taskidqtl.setClauseList(list1);
|
// taskidqtl.setId("p");
|
// taskidqtl.setType(QTConstants.TYPE_BTM);
|
// Map<String, String> map1 = new HashMap<String, String>();
|
// map1.put("BusinessType".toLowerCase(), "5");
|
// map1.put("oid".toLowerCase(), boOid);
|
// Condition condition1 = Tool.getCondition(map1);
|
// taskidqtl.setCondition(condition1);
|
// HashMap<String, String> datamapBytask = new HashMap<String, String>();
|
// BusinessObject[] findBTMObjectsbyTask = QTClient.getService()
|
// .findBTMObjects(taskidqtl.getId(),
|
// Tool.qtTOXMl(taskidqtl).asXML());
|
// return findBTMObjectsbyTask;
|
// }
|
//
|
// private LinkObject[] getLinkObjectsByQuery(String toOid) throws VCIError
|
// {
|
// QueryTemplate qtlLink = new QueryTemplate();
|
// List<String> listLink = new ArrayList<String>();
|
// listLink.add("*");
|
// qtlLink.setLinkType("input".toLowerCase());
|
// qtlLink.setClauseList(listLink);
|
// qtlLink.setId("p");
|
// qtlLink.setType(QTConstants.TYPE_LINK);
|
// qtlLink.setDirection(QTConstants.DIRECTION_POSITIVE);
|
// Map<String, String> linkMap = new HashMap<String, String>();
|
// linkMap.put("t_oid".toLowerCase(), toOid);
|
// Condition conditionLink = Tool.getCondition(linkMap);
|
// qtlLink.setCondition(conditionLink);
|
// LinkObject[] findLTObjects = QTClient.getService().findLTObjects(
|
// qtlLink.getId(), Tool.qtTOXMl(qtlLink).asXML());
|
// return findLTObjects;
|
// }
|
|
}
|