InfoPath访问WCF

例子下载: https://files.cnblogs.com/wxwinter/WFInfoPath.rar

 

目录

InfoPath访问WCF    1

先说一下例子的场景    1

功能说明    1

扩展说明    1

服务端    1

数据模型    1

内存数据缓存    2

WCF    2

客户端    3

InfoPath申请单    3

InfoPath查询单    5

InfoPath审核单    8

InfoPath审批单    12

使用说明    15

申请    15

审核    16

审批    18

查询    20

在服务器上查看数据    21

 

 

InfoPath访问WCF

先说一下例子的场景

 

一个审批的过程

 

申请 -> 审核 -> 审批

 

数据表单的结构为表中表

表单编号

[申请时添写]

申请内容说明

[申请时添写]

申请内容项

内容项

备注

[申请时添写]

[审核时添写]

[申请时添写]

[审核时添写]

可根据需要添加项…..

审核意见

[审核时添写]

审批意见

[审批时添写]

 

功能说明

  • 没用使用SharePoint或IIS
  • WCF服务使用Winform发布,InfoPath表单以磁盘文件的方式发布
  • InfoPath表单直接通过WCF与数据服务通信
  • 没的使用数据库,使用一全局集合做临时数据库
  • InfoPath表单中提供了只读锁写与必填验证

扩展说明

在真实使用时,建议将InfoPath表单发布到WEB网站或SharePoint中

临时数据库可用Linq To SQL 或 Linq To Entity 替换

如果要加流程控制,可将齐与WF挂接

服务端

数据模型

[System.Runtime.Serialization.DataContract]

public class myDataForm

{

[System.Runtime.Serialization.DataMember]

public string 表单编号

{ set; get; }

 

[System.Runtime.Serialization.DataMember]

public string 申请内容说明

{ set; get; }

 

[System.Runtime.Serialization.DataMember]

public List<myDataFormItem> 申请内容项

{ set; get; }

 

[System.Runtime.Serialization.DataMember]

public string 审核意见

{ set; get; }

 

[System.Runtime.Serialization.DataMember]

public string 审批意见

{ set; get; }

 

}

[System.Runtime.Serialization.DataContract]

public class myDataFormItem

{

[System.Runtime.Serialization.DataMember]

public string 内容项

{ set; get; }

 

[System.Runtime.Serialization.DataMember]

public string 备注

{ set; get; }

 

}

 

内存数据缓存

public class myDB

{

public static List<myDataForm> db = new List<myDataForm>();

}

 

WCF

使用basicHttpBinding

[ServiceContract]

public interface IWCFService

{

[OperationContract]

myDataForm getmyDataForm(string myID);

 

[OperationContract]

void createmyDataForm(myDataForm myData);

 

[OperationContract]

void updatemyDataForm(myDataForm myData);

}

public class WCFService : IWCFService

{

public myDataForm getmyDataForm(string myID)

{

if(myDB.db.Exists(p=>p.表单编号 ==myID))

{

return myDB.db.First(p => p.表单编号 == myID);

}

return null;

}

public void createmyDataForm(myDataForm myData)

{

myDB.db.Add(myData);

}

public void updatemyDataForm(myDataForm myData)

{

if (myDB.db.Exists(p => p.表单编号 == myData.表单编号))

{

var v= myDB.db.First(p => p.表单编号 == myData.表单编号);

v.申请内容说明 = myData.申请内容说明;

v.审核意见 = myData.审核意见;

v.审批意见 = myData.审批意见;

v.申请内容项 = myData.申请内容项;

}

}

}

 

 

客户端

InfoPath申请单

 

 

 

 

 

 

 

 

 

 

InfoPath查询单

 

 

 

InfoPath审核单

 

 

 

 

 

 

 

 

 

 

 

InfoPath审批单

 

 

 

 

 

 

 

 

使用说明

使用xsn模板生成infopath的xml文件

 

申请

基于[申请单.xsn]模板创建[001事项申请单.xml]

 

 

审核

基于[审核单.xsn]模板创建[001事项审核单.xml]

 

 

 

审批

基于[审批单.xsn]模板创建[001事项审批单.xml]

 

 

 

 

 

查询

基于[查询单.xsn]模板创建[001事项查询单.xml]

 

 

在服务器上查看数据

 

 

原文地址:https://www.cnblogs.com/foundation/p/1378915.html