1、接口创建
package weaver.workflow.webservices;
import javax.jws.WebMethod;
import javax.jws.WebService;
/**
* @author shoushou
* @dateTime 2023年3月12日 上午12:42:14
*/
@WebService
public interface DoCreateWf {
/**
* 执行创建流程
*
* @param WorkflowRequestInfo 流程信息
* @param jobnums 人员工号
* @return String 返回结果
*/
@WebMethod(operationName = "doCreateWorkflowRequest" ,action = "urn:weaver.workflow.webservices.DoCreateWf.doCreateWorkflowRequest")
public String doCreateWorkflowRequest(WorkflowRequestInfo wri, String jobnums);
}
2、实现类
package weaver.workflow.webservices;
import java.util.ArrayList;
import java.util.List;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.soa.workflow.request.Cell;
import weaver.soa.workflow.request.DetailTable;
import weaver.soa.workflow.request.DetailTableInfo;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import weaver.soa.workflow.request.RequestService;
import weaver.soa.workflow.request.Row;
/**
* @author shoushou
* @dateTime 2023年3月12日 上午13:41:13
*/
public class DoCreateWfImp extends BaseBean implements DoCreateWf{
private RequestService requestService = new RequestService();
public String doCreateWorkflowRequest(WorkflowRequestInfo wri, String jobnums) {
RecordSet rs = new RecordSet();
String sql ="select id from hrmresource where loginid='"+jobnums+"'";
rs.execute(sql);
String id="";
while(rs.next()){
id=rs.getString("id");
}
try {
wri.setCreatorId(id);
RequestInfo ri = toRequestInfo(wri);
return requestService.createRequest(ri);
} catch (Exception e) {
e.printStackTrace();
writeLog(e);
}
return null;
}
/**
* 将WorkflowRequestInfo转换为RequestInfo
* @param WorkflowRequestInfo
* @return RequestInfo
*/
private RequestInfo toRequestInfo(WorkflowRequestInfo wri) throws Exception {
if(wri==null) return null;
int formid = 0;
String isbill = "0";
RecordSet rs = new RecordSet();
int workflowid = Util.getIntValue(wri.getWorkflowBaseInfo().getWorkflowId(), 0);
//单据(系统表单)特殊逻辑
rs.executeProc("workflow_Workflowbase_SByID", workflowid + "");
if (rs.next()) {
formid = Util.getIntValue(rs.getString("formid"), 0);
isbill = "" + Util.getIntValue(rs.getString("isbill"), 0);
}
if("1".equals(isbill) && formid == 158) {//报销申请单
String amount = "0";
WorkflowDetailTableInfo[] wdtis = wri.getWorkflowDetailTableInfos();
if(wdtis != null) {
for(int i=0; i<wdtis.length; i++) {
WorkflowRequestTableRecord[] wrtrs = wdtis[i].getWorkflowRequestTableRecords();
if(wrtrs != null) {
for(int j=0; j<wrtrs.length; j++) {
if(wrtrs[j]!=null && wrtrs[j].getRecordOrder()==-1) {
WorkflowRequestTableField[] wrtfs = wrtrs[j].getWorkflowRequestTableFields();
if(wrtfs != null) {
for(int k=0; k<wrtfs.length; k++) {
if(wrtfs[k]!=null && "amount".equals(wrtfs[k].getFieldName())){
amount = wrtfs[k].getFieldValue();
}
}
}
}
}
}
}
}
WorkflowMainTableInfo wmti = wri.getWorkflowMainTableInfo();
if(wmti!=null) {
WorkflowRequestTableRecord[] wrtrs = wmti.getRequestRecords();
if(wrtrs!=null&&wrtrs[0]!=null) {
for(int i=0;i<wrtrs[0].getWorkflowRequestTableFields().length;i++) {
WorkflowRequestTableField wrtf = wrtrs[0].getWorkflowRequestTableFields()[i];
if(wrtf!=null && "total".equals(wrtf.getFieldName())){
wrtf.setFieldValue(amount);
}
}
}
}
}
RequestInfo requestInfo = new RequestInfo();
if(Util.getIntValue(wri.getRequestId())>0) requestInfo = requestService.getRequest(Util.getIntValue(wri.getRequestId()),-1);
requestInfo.setRequestid(wri.getRequestId());
requestInfo.setWorkflowid(wri.getWorkflowBaseInfo().getWorkflowId());
requestInfo.setCreatorid(wri.getCreatorId());
requestInfo.setDescription(wri.getRequestName());
requestInfo.setRequestlevel(wri.getRequestLevel());
requestInfo.setRemindtype(wri.getMessageType());
MainTableInfo mainTableInfo = new MainTableInfo();
List fields = new ArrayList();
WorkflowMainTableInfo wmti = wri.getWorkflowMainTableInfo();
if(wmti!=null) {
WorkflowRequestTableRecord[] wrtrs = wmti.getRequestRecords();
if(wrtrs!=null&&wrtrs[0]!=null) {
for(int i=0;i<wrtrs[0].getWorkflowRequestTableFields().length;i++) {
WorkflowRequestTableField wrtf = wrtrs[0].getWorkflowRequestTableFields()[i];
if(wrtf!=null){
if(wrtf.getFieldName()!=null&&!"".equals(wrtf.getFieldName())
&&wrtf.getFieldValue()!=null&&!"".equals(wrtf.getFieldValue())
&&wrtf.isView()&&wrtf.isEdit()){
Property field = new Property();
field.setName(wrtf.getFieldName());
field.setValue(wrtf.getFieldValue());
field.setType(wrtf.getFieldType());
fields.add(field);
}
}
}
}
}
Property[] fieldarray = (Property[]) fields.toArray(new Property[fields.size()]);
mainTableInfo.setProperty(fieldarray);
requestInfo.setMainTableInfo(mainTableInfo);
DetailTableInfo detailTableInfo = new DetailTableInfo();
WorkflowDetailTableInfo[] wdtis = wri.getWorkflowDetailTableInfos();
//手机版暂不支持明细字段编辑功能
//wdtis = null;
List detailTables = new ArrayList();
for(int i=0;wdtis!=null&&i<wdtis.length;i++){
DetailTable detailTable = new DetailTable();
detailTable.setId((i+1)+"");
WorkflowDetailTableInfo wdti = wdtis[i];
if(wdti==null){
continue;
}
WorkflowRequestTableRecord[] wrtrs = wdti.getWorkflowRequestTableRecords();
List rows = new ArrayList();
for(int j=0;wrtrs!=null&&j<wrtrs.length;j++) {
Row row = new Row();
row.setId(j+"");
WorkflowRequestTableRecord wrtr = wrtrs[j];
WorkflowRequestTableField[] wrtfs = wrtr.getWorkflowRequestTableFields();
List cells = new ArrayList();
for(int k=0;wrtfs!=null&&k<wrtfs.length;k++) {
WorkflowRequestTableField wrtf = wrtfs[k];
if(wrtf!=null) {
if(wrtf.getFieldName()!=null&&!"".equals(wrtf.getFieldName())
&&wrtf.getFieldValue()!=null&&!"".equals(wrtf.getFieldValue())
&&wrtf.isView()&&wrtf.isEdit()){
Cell cell = new Cell();
cell.setName(wrtf.getFieldName());
cell.setValue(wrtf.getFieldValue());
cell.setType(wrtf.getFieldType());
cells.add(cell);
}
}
}
if(cells!=null&&cells.size()>0) {
Cell[] cellarray = (Cell[])cells.toArray(new Cell[cells.size()]);
row.setCell(cellarray);
}
rows.add(row);
}
if(rows!=null&&rows.size()>0) {
Row[] rowarray = (Row[])rows.toArray(new Row[rows.size()]);
detailTable.setRow(rowarray);
}
detailTables.add(detailTable);
}
DetailTable[] detailTablearray = (DetailTable[])detailTables.toArray(new DetailTable[detailTables.size()]);
detailTableInfo.setDetailTable(detailTablearray);
requestInfo.setDetailTableInfo(detailTableInfo);
return requestInfo;
}
}
3、类路径地址:
ecology/classbean/weaver/workflow/webservices
4、找到/weaver/ecology/classbean/META-INF/xfire 底下的serveces.xml配置文件
<service>
<name>DoCreateWf</name>
<namespace>webservices.services.weaver.com.cn</namespace>
<serviceClass>weaver.workflow.webservices.DoCreateWf</serviceClass>
<implementationClass>weaver.workflow.webservices.DoCreateWfImp</implementationClass>
</service>