例子下载: 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

 

 

先说一下例子的场景

 

一个审批的过程

 

申请 -> 审核 -> 审批

 

数据表单的结构为表中表

表单编号

[申请时添写]

申请内容说明

[申请时添写]

申请内容项

内容项

备注

[申请时添写]

[审核时添写]

[申请时添写]

[审核时添写]

可根据需要添加项…..

审核意见

[审核时添写]

审批意见

[审批时添写]

 

功能说明

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

扩展说明

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

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

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

服务端

数据模型

InfoPath访问WCF

[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访问WCF

 

客户端

InfoPath申请单

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath查询单

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

InfoPath审核单

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

 

 

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath审批单

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

 

InfoPath访问WCF

 

使用说明

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

 

申请

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

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

审核

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

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

审批

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

 

InfoPath访问WCF

 

InfoPath访问WCF

InfoPath访问WCF

 

InfoPath访问WCF

 

InfoPath访问WCF

 

查询

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

 

InfoPath访问WCF

 

在服务器上查看数据

InfoPath访问WCF

 

 

相关文章: