泛微E8自定义发布外部调用webservice接口步骤

介绍:本接口主要是在系统创建流程的接口(通过人员id创建)不满足其他异构系统条件需求,在系统的基础接口上,包一层壳。就是把系统传参条件修改,通过双方系统都能取到的员工工号来创建流程。下面为实例:

一、创建一个interface属性的接口文件,@WebMethod中写入要执行的方法名,和方法名中的类所在路径地址。

package weaver.workflow.webservices;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * @author  Yuyb
 * @version 2020年3月12日 上午11:44:34
 * 类说明
 */
@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);
}

二、写对应对应的实现类

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  Yuyb
 * @version 2020年3月12日 上午11:35:50
 * 类说明
 */
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;
	}
	
	
	
}

三、将接口类和接口对应的实现类放入系统的服务器上编译,路径地址为:

ecology/classbean/weaver/workflow/webservices

四、找到/weaver/ecology/classbean/META-INF/xfire 底下的serveces.xml配置文件

添加对应接口类和实现类,如下图

 保存配置文件,再访问ip地址/services就可看到自己定义的webservice接口了

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 泛微oa是一种常用的办公自动化软件,它可以通过WebService接口进行调用WebService接口是一种基于Web的技术,可以使不同的应用程序之间进行数据交互和通信。 调用泛微OA的WebService接口需要以下步骤: 1. 确定要调用WebService接口的地址。通常情况下,泛微OA的WebService接口地址为"http://[oa域名]/ServiceForAndroid.asmx"。可以在泛微OA的官方文档或者相关的技术资料中找到接口地址。 2. 创建一个调用WebService接口的客户端。可以使用Java、.NET等编程语言来创建客户端。根据不同的编程语言和开发平台,创建客户端的方式也会有所不同。 3. 根据需要调用接口方法,将参数传递给相应的接口方法。每个接口方法都有相应的功能或者操作,可以根据需求选择合适的方法进行调用。 4. 调用WebService接口方法,并获取返回结果。根据接口的返回值类型不同,可以通过相应的方式获取返回结果。 5. 对返回结果进行处理和解析。根据返回结果的不同格式和数据结构,可以对返回结果进行相应的处理和解析,以便后续的业务逻辑操作或者展示。 需要注意的是,调用泛微OA的WebService接口需要提供相应的权限和认证。通常情况下,需要提供访问接口的用户名和密码。 以上是关于如何对泛微OA的WebService接口进行调用的简要介绍。具体的调用方式和操作细节可以参考泛微OA的官方文档或者相关的技术资料。 ### 回答2: 泛微OA是一种常用的企业办公自动化系统,它提供了丰富的功能和扩展性,其中包括了Webservice接口调用Webservice是一种基于Web服务标准的接口调用方式,可以实现不同系统之间的数据交互和功能扩展。 在使用泛微OA的Webservice接口进行开发和调用时,首先需要了解OA系统提供的接口文档和功能接口,以便清楚接口的使用方法和参数格式。接口文档通常包含了接口的名称、输入参数、输出参数等信息,开发人员可以根据需要对接口进行调用和测试。 接口调用步骤大致如下: 1. 确定需要调用接口名称:根据业务需求,确定需要调用接口名称。 2. 创建Webservice客户端:在开发环境中创建Webservice客户端,用于与OA系统的接口进行通信。 3. 设置Webservice接口的访问地址:根据OA系统提供的接口地址、命名空间等信息,进行配置。 4. 构造请求参数:根据接口文档中定义的输入参数,构造相应的请求参数。 5. 调用接口方法:通过Webservice客户端调用相应的接口方法,将请求参数传递给OA系统。 6. 处理响应结果:接收到OA系统返回的响应结果后,根据接口文档中定义的输出参数进行处理和解析。 7. 处理异常情况:在接口调用过程中,可能会发生各种异常情况,需要进行相关的异常处理。 总的来说,泛微OA Webservice接口调用是一种方便灵活的方式,可以实现企业业务系统与OA系统之间的数据交互和功能扩展。通过了解接口文档和按照规范进行开发,可以有效地调用和管理接口,提高工作效率和系统的整合性。 ### 回答3: 泛微OA是一款功能强大的企业管理软件,具有开放的Web服务接口,可以实现与其他系统的数据交互和集成。通过调用泛微OA的Web服务接口,可以实现各种功能,如创建、修改和删除数据,查询数据,以及执行各种操作。 泛微OA的Web服务接口使用SOAP(简单对象访问协议)协议进行通信,通过HTTP或HTTPS进行数据传输。开发者可以使用各种编程语言,如Java、C#等,通过SOAP协议调用泛微OA的Web服务接口。 使用泛微OA的WebService接口,需要先通过身份验证获得访问权限。在调用接口之前,需要传递正确的用户名和密码进行认证,以确保只有授权的用户能够访问和操作数据。 接口调用时,需要传递特定的参数和数据格式,根据接口文档提供的方法和参数进行调用。例如,如果要创建一个新的公文,可以调用CreateDoc方法,传递相应的参数,如公文标题、内容等。调用接口后,会返回相应的结果,通过接口返回的数据可以进行进一步的处理和操作。 在进行接口调用时,需要注意接口的安全性和性能。在传递参数和数据时,要进行数据校验和过滤,确保数据的准确性和完整性。同时,要注意调用接口的频率和并发性,避免对系统性能造成负担。 总之,泛微OA的WebService接口提供了一种方便、灵活的方式与泛微OA系统进行集成和数据交互。开发者可以根据自己的需求,通过调用接口实现各种功能和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值