RSS

Monthly Archives: 九月 2004

SharePoint文档流转Web组件开发中…

虽然还有很多工作要完成,但是已经有一些可以看到的成果了。我在Gotdotnet上建立了一个项目,workspaces.gotdotnet.com/spsflowlite。在上面我放上了一段录制的更新的视频演示。

已经内置了一些对文档进行最常见的操作的动作:

可以在一个文档库里面放上多个文档流转WebPart组件,每一个完成一项功能:

每个被启用了的流转Web组件都会自动给文档的关联菜单加上一个项目:

每个不同的文档操作,都会出现不同的属性让用户进行设置:

很好的一个特点是,管理员可以给文档库增加自定义的栏,然后使用文档流转Web组件来对栏的值进行设置:

我推荐您在这个项目的站点上下载完整的Flash格式的视频Demo,以得到一个更加具体的概念。如果顺利,预计我会在不久发布一个公开的测试版本。

 

Posted by on 2004/09/26 in 未分类

28 Comments

Tags:

一个“轻量级”的SharePoint文档流转WebPart

我敢肯定有不少的人一边在尝试我的SharePoint Workflow Engine,一边心里在暗暗咒骂它配置的复杂和一些莫名其妙的问题,而我也对信箱里面关于它的求助信件渐渐的感到了畏惧。

其实有时候我们的需要很简单,只要能够在文档库里面和文档库之间实现文件的各种操作(同意、不同意、报老总审批等等…),所以我计划做一个更加“轻量级”的东西,更加方便,不需要太多配置,使用起来更加直观。

首先,我们把相应的WebPart加到文档库页面中,然后配置使用文档操作控制器。下面的图片中那个WebPart其实是我自己写的一个用来包装普通用户控件的WebPart,是一个比网上被用得很多的SmartPart更加强劲的东东(SmartPart有时候不能保存用户控件的属性数据,而且没有实现控件之间的Connection)。


然后,根据自己的需要,来进行一些配置。比如,我们要给文档增加一个操作,当我们觉得文档内容简直是垃圾的时候,就把它自动删除掉。配置完成后,页面上可以看到配置信息。


这时在文档的下拉菜单里面,就会自动多出一项来,根据我们的自定义配置,显示出相应的菜单项。

点击一下这个菜单,就会自动回发,服务器根据配置的操作,对文档来完成相关的操作。

现在这个东东还只是一个很基本的构想和搭架子阶段,如果你有什么想法,可以留言讨论。我录了一段更加完整的操作,如果需要,可以到项目站点workspaces.gotdotnet.com/spsflowlite下载演示。

 

Posted by on 2004/09/22 in 未分类

23 Comments

Tags:

访问SharePoint站点用Office打开文档提示输入用户名和密码的解决方法

已经有不少人问到这个问题了,当我们访问SharePoint站点时,既然已经输入了用户名和密码,为什么用Office打开上面的文档后,又仍然提示我们再次输入用户名和密码呢?

原因:IIS虚拟站点使用了基本认证,而这种认证方式因为是明文传递,所以不会自动从IE中传递到Office中。

解决方法:更改IIS虚拟站点的认证方式,从基本认证改为集成认证。

MS KB:http://support.microsoft.com/default.aspx?scid=kb;en-us;871155

 

Posted by on 2004/09/16 in 未分类

17 Comments

Tags:

TechED2004广州 第二天

第一个Session是听的黄鹏的《智能客户端:在.NET下开发数字墨水应用程序》,使用数字墨水的SDK,我们可以轻松将这个技术整合到我们自己的WinForms和WebForms程序中。政府机构和国有企业的领导老总们对于在电子文档上使用自己的笔迹签名肯定情有独钟,呵呵,当然如果真正应用上,可以想像实际应用中还被遇到各种问题,比如领导会问如果别人冒用我的笔迹签名怎么办之类的…另外,我想装备上TabletPC的客户数量肯定很少,客户愿不愿意弄一台这样的TabletPC也是个不小的问题。

在第一个Session上,和开心接上头了,有了新发型的开心和以前照片上差别不小嘛…

选择的第二个Session是郭安定的《关注中小型企业: 如何以最低成本构建企业的知识信息平台》,原以为这个Session的内容是关于如何使用SharePoint之类的东东来快速构建企业的信息平台,结果是如何使用现有的Excel、Access来满足中小企业型的客户在企业运作过程中遇到的种种问题,但郭安定的演讲的确很精彩(我发现台湾人在演讲上的确很厉害,包括讲Delphi的李维,在调动情绪、感染听众上,很值得我们学习),而且也让与会者对Office有个更深的“理解”和想法。对于没有太多预算的客户来说,如何使用手头可用的工具,来满足他们的需求,其中的学问不小。特别是演讲过程中讲师的一句话实在是经典:“如何将Word中的一个表格中的数据完整的导到Excel表格中呢?典型的程序员思维是:嗯,我可以用VBA做到…其实Copy&Paste就行了!”:)

接下来是午餐,今天的午餐准备显然比昨天充足,没有再出现排队领盒饭的现象,但是质量…反正我是吃了几口就放下了:(…

吃过午饭,直接又到了赵雨的《大都会:构想面向服务的体系架构》Session会场,午饭后的慵懒和赵雨平缓的声调,显然很有助于与会者打瞌睡…其实这个Session的内容还是不错的,使用了一个城市的发展来形容软件系统的发展。最开始,城市很小,城市中的各个成员(人、机构)之间几乎都很少相互打交道,手工业发达,更常见的情况是对产品的个别定制,当城市渐渐发展起来以后,各个成员的交流多了起来,物品的生产开始趋向规范化和细分化,同时生产的过程也越来越对外部封闭(我们不需要了解电冰箱是如何生产出来的,只需要去超市买回来,然后接到标准的电源接口上,用就行了)…等等等等…呵呵,这不是很像软件系统的发展过程吗?

下一个Session是曹严明的《智能客户端架构与设计指南》,由于Smart Client的课题已经被讲过很多次了,所以我也没有太多感觉了,如果想深入了解,可以去MSDN中文字站点找那份和Session同名的电子文档。

接下来的Session本来是想听《面向服务的体系架构的实现》,可还是选择了Best Liang的《如何在微软的平台构建强大、可扩展的工作流解决方案》,这个Session基本上是介绍Captaris公司的Teamplate Workflow产品,包括Teamplate for SharePoint。我对这个产品一直就比较感兴趣,可惜时间有限,而Session前段又用了不少时间介绍Captaris公司和Captaris的产品线,我最想详细了解的Teamplate for SharePoint只被匆匆的演示了一下,我对于其产品特性、产品架构仍然不是很了解,看来我只好去Captaris的网站找找,看有没有这个产品更详细的WhitePaper了。

接着是吴延安的《ASP.NET性能优化最佳实践》,这个Session还是很吸引开发人员的,虽然其内容并不能算很新鲜。主题依旧是那几点:ViewState、WebControl、Cache、DataGrid等等…不过我最后有点担心,因为讲师在讲解了DataGrid对服务器的资源冲击之后,演示了用类似ASP的手法将数据集合以for的形式直接来Response成一行行的“<tr>”(稍后讲师用UserControl适当的把这个封装了一下),并说明后者在效率上要快上很多,不会参加Session的开发人员回去了就真的依照葫芦画瓢,把页面上的DataGrid都换成那样类似的方法来实现吧?讲师应该在最后补上一句:真正做软件可不能全部从性能方面来考虑呀…

铛铛铛铛…最后登场的就是开心的《Visual Studio 2005团队开发系统简介》了。这个Session是介绍VS2005 Team System的,内容很值得一听。开心对ppt制作肯定是费了很大的心血,ppt的开头部分…哈哈,开心把ppt放在blog上让大家下载吧。TechED2004广州会场所有Session里面介绍的最新的东东,就是这场Team System了,看得出大家对TS还是很振奋的,应用建模、系统建模、对DomainModel建模、类图代码双向同步、集成的FxCop、单元测试、性能测试、Workitem管理、项目管理…不过我觉得如果开心录制的Video里面的操作再简单一些就好了,因为大家对这个东西不熟悉,太复杂的操作会让大家“懵懵”的。开心在北京还有Session,加油呀!

 

Posted by on 2004/09/15 in 未分类

15 Comments

Tags:

TechED2004广州 第一天

因为我在深圳,所以早上早早起床,幸好很早就赶到了广州中国大酒店,入场,到各个参展商的展位上转了一圈,发现培训居多。深圳时代高科也是参展商之一,我对他们的基于SharePoint的PortalNet这个产品挺感兴趣的,想乘机和他们的技术人员交流一下,可惜时间尚早,时代高科派发资料的MM说技术人员还没到…

坐下不久,会议正式开幕了。首先是微软亚洲研究院副院长的开幕主题演讲,整个演讲过场中,对数字墨水的一段视频演示是最Cool的内容,数字墨水对用户手工画的Table、Diagram的“理解”,的确让人大开眼界。

演讲过程中穿插了一个介绍ISA2004中文版的场景演示,ISA2004对企业网关和防火墙的管理的简化,给我留下了深刻的印象。如果现场坐着很多公司、企业的IT Pro人员,很可能他们回去以后,他们企业的员工可要倒霉了,因为使用ISA2004封锁MSN Messenger、QQ、在线视频、软件下载而又不影响正常浏览网页太简单了…在给每位与会者发的资料中,附送了一份ISA2004中文120天评估版。

主题演讲完成后,各个Session开始登场了。我参加的第一个Session是栾跃的《软件开发项目管理》,可能是平时也看过不少MS关于项目管理的文章和书籍的缘故,所以对这个Session没有太多的感觉…

对于午餐,显然中国大酒店准备不足,虽然餐厅位置挺多,但是盒饭的供应速度显然过于缓慢,排队过程中无聊的我和其他人开始开起玩笑:“这是地主家开仓放粮,灾民在排队领粮食呢”。

下午我听的第一个Session依然选择的是栾跃的《软件开发项目管理模型》。拖拖拉拉的午餐后立即投入讲座的问题体现在Session的开始阶段,会场不少人都有些昏昏欲睡(包括我),这个Session比上午的要更加精彩一些,特别是对各种现在流行的软件开发管理方法论的介绍和评价(RUP、Agile、XP…),显然让大家都听得津津有味。对于软件开发过程中的项目管理,所有人肯定都有大把的疑惑,所以讲座后的提问阶段大家也显得非常踊跃。

接下来的Session我选择了可能是参与者最多的孙展波的《Visual C# 2005 语言和集成开发环境增强》,整个分会场已经坐不下了,所以边上也站了不少同志。开始阶段孙展波对VC#2005 IDE的展示显然让所有与会者眼睛一亮,赞叹声和嘀咕声此起彼伏。但可能上一个Session的提问占用了不少额外的时间,而Session间的缓冲时间也几乎没有,所以在非常紧迫的时间压力之下,展波开始飞快的翻动ppt,我坐在下面怀疑如果其他人事先没有对C# 2.0的新特性有一些概念的话,是否现在还能对当时Session里面介绍的众多特性保留一些回忆…Session过程中我回答了展波的一个现场Quiz,获赠AD Walker一个:)。

接下我参加的Session是杨滔的《智能客户端的商业价值》,没有太多新的东东,概念性的东西居多,我觉得如果讲解一下Smart Client的设计Guideline,包括WinForms与服务器间数据的交互、Offline特性等等,可能效果更好。当然,这个Session的主题更突出“商业价值”,而不是“设计指南”或其他的。

接下来又是孙展波的《高效网站开发示例: 充分利用ASP.NET 2.0的新特性》,时间的压力依然逼得展波飞快的翻动ppt,并一再告诉大家可以在他的blog上获得更多的信息,想必展波也是郁闷不已…展波的操作演示依然是最吸引大家的部分,ASP.NET 2.0中让程序员以更少代码获得更多功能的众多特性再次引起众多的赞叹和嘀咕声。但是后面对ASP.NET 2.0的各个新特性介绍则因为时间缺乏我估计现场能有印象者甚少。Session结束后,众多与会者开始包围展波并对他随身携带的奖品和书籍虎视眈眈,最后展波使出“金蝉脱壳”,把书和奖品扔向人群外围,终于得以脱困…我随即上前合影一张留念,呵呵。

接下来本来对黄鹏的《Visual Studio2005:使用MSBuild创建每日构建》非常感兴趣,可临时有事必须要走,遗憾未能参加这个Session。

 

Posted by on 2004/09/14 in 未分类

14 Comments

Tags:

TechED2004 广州 参会计划

已经准备在13、14号参加广州的TechED2004了,根据广州会场的会程安排,我的场次选择计划是:

9/13上午:软件开发项目管理(栾跃)

9/13下午:软件开发项目管理模型(栾跃)、Visual C# 2005 语言和集成开发环境增强(孙展波)、智能客户端的商业价值(杨滔)、高效网站开发示例: 充分利用ASP.NET 2.0的新特性(孙展波)、Visual Studio2005:使用MSBuild创建每日构建(黄鹏)

9/14上午:深入探讨“微软解决方案框架”(王志峰)、关注中小型企业: 如何以最低成本构建企业的知识信息平台(郭安定)

9/14下午:大都会:构想面向服务的体系架构(赵雨)、智能客户端架构与设计指南(曹严明)、面向服务的体系架构的实现(曹严明)、微软电子政务解决方案(张执玉)、Visual Studio 2005团队开发系统简介(王洪超)

 

Posted by on 2004/09/12 in 未分类

7 Comments

System.Web.UI.Page类的构造函数的执行时机

这篇Blog来自一位同事和我的一次关于公司一个项目中的一个错误的讨论。错误非常简单,就是当在一个页面的构造函数中使用类似:

Session[“aaa”] = “bbb”;

的时候,就会抛出异常,说系统中Session没有被enable,所以不能使用(当然实际情况是肯定被enable了)。问题所在和解决方法也很快被找到了,在构造函数中不能使用Session的,将这个移到Page_Init中就OK了。

这个错误的根本原因应该是在页面的构造函数被调用时,ASP.NET引擎中负责处理Session的SessionStateModule中相应初始化Session的代码还没有被执行,所以才导致了那时不能访问当前上下文的Session信息。

SessionStateModule在其Init方法中,是在HttpApplication的AcquireRequestState事件(更确切说,应该是通过使用AddOnAcquireRequestStateAsync()方法,来进行异步的事件处理)上注册了相应的方法,来完成初始化HttpSessionState对象,并将其赋值给当前的HttpContext的Session属性,而在HttpApplication的AcquireRequestState事件被调用的时候,页面对象已经被创建了,就是说,页面的构造函数的执行是在AcquireRequestState事件被调用之前,所以在页面构造函数中访问Session当然会引发相应的异常。

HttpApplication的确切执行顺序是:

BeginRequest -> AuthenticateRequest -> AuthorizeRequest -> ResolveRequestCache -> 构建页面(在这里页面构造函数被调用) -> AcquireRequestState(这里才初始化当前上下文的Session) -> PreRequestHandlerExecute -> 进入页面执行生命周期(开始Page_Init) -> PostRequestHandlerExecute -> ReleaseRequestState -> UpdateRequestCache -> EndRequest

 

Posted by on 2004/09/12 in 未分类

2 Comments

Tags:

C#和C++的一个有意思的差别

看到一篇有意思的文章:http://blogs.msdn.com/lucabol/archive/2004/08/31/223580.aspx

“x+=x++”的结果是什么?如果是C++,由于C++标准没有规定运算符“+”的左右两边的子表达式的运算顺序,所以结果是未定义的。而C#标准则明确规定了“+”的两边的运算顺序是从左到右,所以是可以得到“x+=x++”的确切的值的。

比如x = 3,下面是C#编译器的解释顺序:
1、首先解释“+=”,将表达式转为“x = x + (x++)”;
2、先计算“+”左边的值:“x = 3 + (x++)”;
3、然后是“x++”,得到:“x = 3 + 3”,同时x被赋值为4;
4、最后“x = 6”,覆盖了上一步赋值结果4。

由于顺序是可以得到确定的,所以还可以得知:

“x = (x++) + x”的结果和“x = x + (x++)”的结果是不一致的。

同样x = 3,“x = (x++) + x”的结果是这样:
1、首先解释“(x++)”,表达式转为:“x = 3 + x”,同时x这时被赋值为4;
2、接着解释“+”右边,表达式转为:“x = 3 + 4”;
3、最后“x = 7”。

结论:YOU ARE NOT GOING TO WRITE THAT CODE…

 

Posted by on 2004/09/01 in 未分类

10 Comments

Tags: