1、添加WSDL
http://****/services/WorkflowService?wsdl
然后 using SeviceReference2
2、C#测试发起流程代码,对应测试流程如下图,有四个字段没有明细表。注意设置的字段必填项对于外部接口发起无效,而那些自动生成的字段在代码中必须指定值,如下图的填单人和时间必须指定。
WorkflowServicePortTypeClient iedc= new WorkflowServicePortTypeClient();
WorkflowBaseInfo workflowBaseInfo = new WorkflowBaseInfo();//工作流信息
/****************测试api触发流程*************/
workflowBaseInfo.workflowId = "33521";//流程ID,到数据库表workflow_base中查对应流程的ID
workflowBaseInfo.workflowName = "测试api触发流程";//流程名称
WorkflowRequestInfo workflowRequestInfo = new WorkflowRequestInfo();//工作流程请求信息
workflowRequestInfo.canView = true;//显示
workflowRequestInfo.canEdit = true;//可编辑
workflowRequestInfo.requestName = workflowBaseInfo.workflowName;//请求标题
workflowRequestInfo.requestLevel = "0";//紧急程度 0:正常 1:重要 2:紧急
workflowRequestInfo.creatorId = "18688"; //创建者ID 创建流程时为必输项,到hrmresourse表中查
workflowRequestInfo.workflowBaseInfo = workflowBaseInfo;//工作流信息
/****************main table start*************/
WorkflowMainTableInfo workflowMainTableInfo = new WorkflowMainTableInfo();//主表
WorkflowRequestTableRecord[] workflowRequestTableRecord = new WorkflowRequestTableRecord[1];//主表字段只有一条记录
WorkflowRequestTableField[] WorkflowRequestTableField = new WorkflowRequestTableField[4];//主表的4个字段
WorkflowRequestTableField[0] = new WorkflowRequestTableField();
WorkflowRequestTableField[0].fieldName = "tdr"; //与流程表(formtable_main_**)字段名一致,所有自动生成字段如提交人、当前日期等必填
WorkflowRequestTableField[0].fieldValue = "18688"; //tdr的值,对应用户ID
WorkflowRequestTableField[0].view = true;
WorkflowRequestTableField[0].edit = true;
WorkflowRequestTableField[1] = new WorkflowRequestTableField();
WorkflowRequestTableField[1].fieldName = "sj";
WorkflowRequestTableField[1].fieldValue = "2020-12-24";
WorkflowRequestTableField[1].view = true;
WorkflowRequestTableField[1].edit = true;
WorkflowRequestTableField[2] = new WorkflowRequestTableField();
WorkflowRequestTableField[2].fieldName = "xxms";
WorkflowRequestTableField[2].fieldValue = "test";
WorkflowRequestTableField[2].view = true;
WorkflowRequestTableField[2].edit = true;
WorkflowRequestTableField[3] = new WorkflowRequestTableField();
WorkflowRequestTableField[3].fieldName = "scfj";
WorkflowRequestTableField[3].fieldType = "http:baidu_sylogo1.gif"; //http:开头代表该字段为附件字段,多个之间用|隔开,后面baidu_sylogo1.gif会显示为附件名
WorkflowRequestTableField[3].fieldValue = "http://****:8001/baidu_sylogo1.gif";//注意如果是外网地址,可能会被公司防火墙拦截
WorkflowRequestTableField[3].view = true;
WorkflowRequestTableField[3].edit = true;
workflowRequestTableRecord[0] = new WorkflowRequestTableRecord();
workflowRequestTableRecord[0].workflowRequestTableFields = WorkflowRequestTableField;
workflowMainTableInfo.requestRecords = workflowRequestTableRecord;
workflowRequestInfo.workflowMainTableInfo = workflowMainTableInfo;
String requestId = iedc.doCreateWorkflowRequest(workflowRequestInfo, 18688);//返回流程触发成功ID
//Label1.Text = requestId;
if (Int32.Parse(requestId) > 0)//小于0则触发失败
{
Label1.Text = "流程触发成功 requestId:" + requestId;
}
else
{
Label1.Text = "流程触发失败";
}