例子下载: https://files.cnblogs.com/wxwinter/WFInfoPath.rar
目录
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]