InfoPath,你不需要吗?

Microsoft Office以及Windows应该是微软的两个最大的盈利产品,所以它们的一举一动,最能牵扯广大最终用户的心。

Office System 2003的推出,让我们感受到其受为一个System的强大协作功能,但相信很多用户,对于Office 2003之外的InfoPath、OneNet等组件还不太了解。我在这儿想先讲讲啥是InfoPath。开心很难使用官方语言去为一个产品下定义,所以还是想到哪说到哪吧。

在几个PoC里面,简单的应用了InfoPath。最简单的,如果你开发了一个Web Service,在你不愿意为其编写ASP.NET的UI的时候,使用InfoPath是最佳选择,其操作就那么几步:

  1. 选择一个Web Service作为提交数据的数据源;
  2. 将数据列表中的Schema拖到表单设计器上;
  3. 再加一个Button按钮,就可以提交了,如果想美化一下,还有多种配色方案可供选择。

一切大功告成,就这么简单。做为一个表单设计工具来讲,InfoPath简单超强!!!有了它,你公司的部门秘书MM甚至不用学习任何编程,就可以做出一个像模像样的报销表单或者会议记录表单出来,供大家填写,甚至直接入库。所需要的就是拖拉而已。当然,再花哨一些的,就需要使用JavaScript编程了。

对于我来说,InfoPath让我感觉最不爽的有两点:

  • 不支持.NET 语言编程,作为一个.NET时代出生的产品,不支持这.NET简单太不可思议了,竟然还使用老套的JS以及老大的VBS;
  • 做出来的表单不能发布到Web上,再往前一步,如果像FrontPage一样,直接就设计出来生成ASP.NET网页,那不是超爽?那样,我们为什么还使用VS.NET来设计ASP.NET表单呢?

第一条不爽,估计下一版本就会有所改善。第二条不爽,估计不会有所改善了,至少MS官方不会提供类似的产品,因为这是Business,是By Design。

但官方不会,非官方就不会了吗?类似于.NET的跨平台,虽然MS没有提供官方实现,但Mono实现了呀。InfoPath也是同样的,有非官方提供的InfoView(http://infoview.uniqueworld.net/)。

可惜呀可惜,这个InfoView不像Mono那么慷慨,它不是免费的,其价格竟然是$12,000,而且还竟然是per CPU的。

世上无难事,只要肯登攀,老外能赚这钱,我们有五千年文明的老中们就不能赚这笔钱了吗?下载InfoPath的SDK,翻翻里面的内容,嘿嘿,还真有咱们需要的,那就是Downlevel工具,这是一个以三种外貌出现的工具,分别是cmd形式,JS形式以及xls形式。它可以将您的InfoPath表单给降格成HTML,为什么说是降格呢?因为在生成HTML后,所有的文本框都不再能填写呢悲伤的脸,看来此路不通呀。

我们再来分析一下InfoPath的文件内容吧,InfoPath表单设计完后,其后缀名是一个XSN文件,其实如果你再深究一步,这是一个cab文件,你可以从InfoPath的文件菜单中选择“提取表单文件”将里面的文件全部提取出来,里面会有一个XML以及一个XSL(根据你定义的视图而定),XML是数据Schema,而XSL则是表现,主要是配色方案。此XSL其实也是Downlevel的,但如果转换一下思路,再用另外一个XSL,将里面的<span>转换为<asp:TextBox>也不是很难吧?再从js文件里面读取出来相应的验证,做一个InfoServer,相信几个人用半年时间也可以开发出来了笑脸。到时候,大把的钱不是到手了吗?

可惜呀,我没有时间去做这个研究及开发,哪位感兴趣,赶快动手做起来,成功后,我就收取一点提成就是了,$100 per CPU,便宜吧?笑脸

打赏作者

“InfoPath,你不需要吗?”的135个回复

  1. 在浏览器中呈现InfoPath表单应该不难做到,但是如果不能对表单做在线修改会造成表单的生命周期过短的问题。SharePoint上将表单内容直接按XML文件形式保存,我个人认为在真正的业务流程中,这样不太实际。但如果要保存为关系数据,如果重新在InfoPath里设计修改,然后再导入到WEB时,对前期保存数据的冲击太大,这一点如果是在线编辑表单时就可以比较从容的处理。但在浏览器里进行表单设计,确很难做到类似InfoPath这样尽善尽美。总之,总是有不如意之处。

  2. 欢迎你回来:)前一段我也在研究InforPath,呵呵,确实是很强大,但是有些东西还不够,本来打算把一些功能在微软“创新杯”软件大赛中做出来,可惜最近被BO公司的CR忙得天昏地暗。希望你有什么好想法就写出来吧。对了,顺便问个问题,请问Microsoft Project有自动排程的功能吗?就是能够解决JSSP问题

  3. InfoPath SP1 + InfoPath 2003 ToolKit for VS.NET就可以用C#或VB.NET编程。
    我在最近的一个项目中要用到InfoPath.

  4. @mvm:

    同理,就像Outlook也能够用作Exchange之外基于其他标准的后端服务(如POP3/IMAP4等)的前端客户程序一样,InfoPath也可以用作除了BizTalk之外的其他后端数据接收服务(Web Services、HTTP POST以及SQL Server数据库服务器)的前端工具。

  5. 了解了InfoPath的工作原理之后,很容易规划开发出更好的前端架构,以便多种UI均可以向后台服务提交数据。比如一个基于Web的任务列表中,每一项任务表单都是由URL标示的,通过合成特定的URL,可以启用不同的用户界面向用户展现表单并收集数据(如:LaunchInfoPathForm.aspx?ID=xxx或CustomWebForm.aspx?ID=xxx)——只需要令LaunchInfoPathForm.aspx返回的是一个附着了与InfoPath相关的特定PI的XML即可。

    期待InfoPath SP1,将有更多特性被实现,对于软件架构人员来讲又多了新的选择,对于最终用户而言也将会有更佳的工作体验。

  6. 伤心就跑回来了? 🙂

    如果用户提交后要取消怎么办?

    Infopath的核心似乎是快速为Webservice/schema生成input/output UI,也许把它跟smartClient结合起来用会更有效吧。

    自己搞一个根据schema动态生成webform/winform的工具吧,肯定更赚钱

  7. 在BizTalk Server 2004中,HWS就是通过InfoPath来做前端的各种数据UI,用起来感觉还不错,顶方便的,但就是因为它是客户端软件和office还是分开卖的,成本太高了,实际项目实施中应该是不会考虑!
    我一直想找个能将InfoPath做成的表单转换成服务端WEB表单的途径;这样,顶多只需要一套InfoPath给管理员去做表单设计就可以了。
    回去试试你所说的方法,另外如果有谁试成功了,麻烦发一些资料给我好吗![email protected]

  8. 我安装了InfoPath以后,不知道做什么就删除了,呵呵,原来可以玩这些,过两天再装上,为了那么多Dollar

  9. 我的看法是比较悲观的,这样的程序设计会遇到很多问题。最主要的就是你要在服务器进程里面调用一个InfoPath进程。如同在服务器上安装了Word/Excel来实时处理上载的Word/Excel文件一样难,会有一些阻塞的问题。

    Office既然在设计的时候是作为Desktop软件,不会为服务器进程考虑并行、死锁之类。我曾经看到了太多服务器死机时候的调用堆栈:
    最上面都是User:MessageBox之类的函数,那就是因为在没有用户界面的服务器进程里面弹出对话框造成的。这样的对话框实际上是无法释放的。

    更糟糕的,这个问题除微软之外还没法解决,除非微软在设计InfoPath的时候考虑到作为服务器进程运行的问题,但这明显是不正确的。

  10. 我不同意“上书房行走”的意见,因为在我的建议中,我没有使用VBA或者其它自动化方式来解决此问题,而是直接使用其xml及xsl文件格式,而得到这种文件格式,只需要调用一个简单的解包命令(此解包命令并不包含在infopath应用程序中,而是一个单独的命令)。所以我想做的这个应用程序,在服务器端根本不需要安装InfoPath。InfoPath只需要安装在需要做Design的机器上即可。

  11. 我正在研究Infopath这个东东,感觉功能很强大。请问哪位知道如果用代码把XSN包解成几个文件吗?

  12. 两个急需的问题:
    1 如何利用c#读取和解压 cab文件
    2 InfoPath 2003 ToolKit for VS.NET我在哪里能找到请提供链接
    多谢各位大哥帮忙!!!

  13. OneNet? 笔误? OneNote, 是一个类似便签的东西,用tablet pc上才能把所有功能发挥出来,一般pc上不是很实用。Office 2003家族还有PS(project server)和sps(SharePoint Portal Server)这两个版本开心应该比我熟,呵呵

  14. 我已经完成了INFOPATH设计表单转换成WEB页面。后台和ORACLE数据库结合。利用第三方工作流引擎,完成了一个数据报送系统。每个流程只需要2个小时左右就可以完成

  15. To 开心就好
    我现在完成的将INFOPATH表单转换成WEB页面,对INFOPATH的功能支持不是太完善,借用了INFOVIEW的一些客户端代码,自己对infopath sp1的一些函数做了一些支持。
    我做这些工作的主要目的是为了现在进行的一个项目,因此还没有把它封装成一个控件。还有一个限制是,infopath里的数据源字段名称必须和数据库字段的名称一致(我没有来得及做映射)。
    如果你需要的 话,我可以将源代码(总共就1000多行)拿出来,大家一起研究。

  16. 我也在试验InfoPath,在它的SP1版本中,能够添加自定义的控件,我想把自己写的ActiveX控件加入其中。

    楼上的代码我也很感兴趣。希望能够参考参考。

  17. InfoView 我走马看花的看过了, 现阶段还是很初步…

    开心: 你的评论挺不错。不过我不能下载你的个人简历…

    hyphappy: 我对你所说的 1000多行源代码, "对Infopath SP1的一些函数做了一些支持", "Oracle 数据库结合" 及 "利用第三方工作流引擎都很感兴趣"。

    有兴趣找寻新的工作机会吗? 请跟我联络: cy at hkucs . org

  18. 最近才开始用InfoPath,感到非常的吃惊加一点疑惑,想用InfoPath+SharePoint+BizTalk试着做OA,需要一些朋友的帮助和支持,非常感谢!!!请与我联系:[email protected]

  19. 请问哪位大侠知道如何做到只打印inforpath表单中填上去的内容,即套打数据源中的内容,

  20. 请教大哥,如何解压安装程序里的cab文件,然后再压缩,多谢!! 可以把答案e-mail 给我吗?shaohuatt@21cn.net

评论已关闭。