阅读:1701
回复:3
|
调用WebService发起流程报错
我在使用BPMService服务发起流程的时候,报了个错误,麻烦帮忙分析下。发起流程的代码如下:
var workflowCode = "ysbm"; var userCode = "oatest"; var finishStart = true; var paramValues = new DataItemParam[]{ new DataItemParam{ ItemName = "ysbm", ItemValue = "2323" } }; var result = new BPMService().StartWorkflow(workflowCode, userCode, finishStart, paramValues); return result.InstanceID; 调用后报错: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Exception: 请输入身份认证信息! 在 OThinker.H3.Portal.BPMService.ValidateSoapHeader() 位置 e:\H3BPM\Portal\WebServices\BPMService.asmx:行号 718 在 OThinker.H3.Portal.BPMService.StartWorkflow(String workflowCode, String userCode, Boolean finishStart, List`1 paramValues) 位置 e:\H3BPM\Portal\WebServices\BPMService.asmx:行号 373 --- 内部异常堆栈跟踪的结尾 --- ------------ 请问这个“身份认证信息”如何设置? |
1楼#
发布于:2017-08-09 08:30
同一项目内,不要使用webservices里的方法,这个是用来外部程序调用的.
照着StartWorkflow函数写一个,去掉ValidateSoapHeader();,这个是用来验证外部调用是否有权限的. 正确的StartWorkflow调用是有五个参数的,第一个就是传入Authentication类型的身份验证信息. |
|
2楼#
发布于:2017-08-09 09:35
非常感谢您的回复,我加上SOAP头后,可以发起流程了,但是我的流程存在一个子表,我用以下方式发起,接口返回了错误:
var paramValues = new DataItemParam[]{ new DataItemParam{ ItemName = "ysbm", ItemValue = "2323" }, new DataItemParam{ ItemName = "kmys", ItemValue = new DataItemParam[]{//kmys 是一个子表 new DataItemParam{ ItemName = "ysyjkm", ItemValue = "工资"} }} }; 接口返回: 流程实例启动失败!错误:System.Exception: System.Collections.Generic.List`1[OThinker.H3.Portal.DataItemParam] Can't be converted to a BizObjectArray type,because the type is not matching,target type is . 在 OThinker.H3.BizBus.CompositeObject.set_Item(String Name, Object value) 在 OThinker.H3.Portal.BPMService.startWorkflow(String workflowCode, String userCode, Boolean finishStart, List`1 paramValues) 位置 e:\H3BPM\Portal\WebServices\BPMService.asmx:行号 576 请问,存在子表的流程表单,使用BPMService如何发起?谢谢。 |
|
3楼#
发布于:2017-08-09 10:16
实名用户_517fa396:非常感谢您的回复,我加上SOAP头后,可以发起流程了,但是我的流程存在一个子表,我用以下方式发起,接口返回了错误:参考这个帖子,用json传数据进去 http://bbs.h3bpm.com/read.php?tid=1789&fid=8&page=1 |
|