摘要: 这段时间要写一个ActiveX控件来控制扫描仪,并在扫描完成之后将文件路径通知页面。因为扫描的过程是异步的,所以我不能利用ActiveX控件公开的Scan方法来返回文件路径,结合Name Ctrl订阅联系人状态的思路,我想,如果可以用JavaScript来订阅ActiveX完成扫描的“事件”,我就可以在这个“事件”中把文件路径当作参数传递给页面了。
阅读全文
posted @
2008-09-02 09:57 Windie Chai(笑煞天) 阅读(1774) |
评论 (15) |
编辑
摘要: 工作流在长时间运行时难免会遇到一些问题,许多业务逻辑需要花费数日、数周乃至数月。在这段时间中,我们不能让工作流实例一直驻留在内存中(比如,我们需要一份开支报告,而不巧的是对此负责的会计师却在西班牙海滩休假,怎么办呢?)。在Windows Workflow中,可以通过持久化服务来解决长时间运行的工作流可能遇到的问题。
阅读全文
posted @
2008-08-27 09:03 Windie Chai(笑煞天) 阅读(1300) |
评论 (7) |
编辑
摘要: NameCtrl是Office自带的一个ActiveX控件,它存在于C:\Program Files\Microsoft Office\Office12\NAME.DLL中。利用它可以显示Office Communicator的状态图标,并且图标包含了菜单,通过菜单可以进行聊天,发送邮件等操作。
关于NameCtrl的细节请访问http://msdn.microsoft.com/en-us/library/bb862236.aspx
Spirit在《Web系统集成OCS在线状态功能》一文中向大家介绍了如何使用这个控件,而我这篇文章将从NameCtrl的一个方法和一个事件入手,来更完美的在网页中集成Office Communicator状态信息。
阅读全文
posted @
2008-08-04 09:05 Windie Chai(笑煞天) 阅读(1315) |
评论 (0) |
编辑
摘要: 在Office Communicator中集成内部办公的话,很多情况下需要向用户发送一些信息的URL,但是默认情况下,用户收到的URL并不是一个可以点击的链接,而是一个在URL前添加了一个下划线的字符串,如:_http://xiaoshatian.cnblogs.com
为Office Communicator启用链接只需要两步:配置URL筛选和允许超链接。
阅读全文
posted @
2008-08-01 16:31 Windie Chai(笑煞天) 阅读(327) |
评论 (0) |
编辑
摘要: Windows Workflow Foundation中有两种调度服务:DefaultWorkflowSchedulerService和ManualWorkflowSchedulerService。
本文将为大家介绍这两种调度服务的区别,通过配置文件配置服务的方法,各自适合的场景。
阅读全文
posted @
2008-07-29 13:09 Windie Chai(笑煞天) 阅读(1537) |
评论 (9) |
编辑
摘要: 在状态机工作流中,如何在接收并处理两个并行的事件呢?又如何在这两个事件都完成之后做进一步操作呢?
本文通过我的上一篇文章《MOSS多级审批工作流【StateMachine版】》来和大家分享我的一种方法。
阅读全文
posted @
2008-07-22 09:04 Windie Chai(笑煞天) 阅读(1602) |
评论 (9) |
编辑
摘要: 去年我发布过一个MOSS多级审批工作流,采用顺序工作流模式开发;后来又做了一些改进,用ConditionedActivityGroupActivity取代了繁复的WhileActivity+IfElseActivity嵌套,但仍然是顺序工作流。
在第二篇文章的末尾我曾写道:“审批这样的流程并不适合用顺序工作流来实现,用WF的另外一种工作流-状态机工作流会更好”,前段时间终于又想起了这回事儿,抽空把这个工作流用状态机实现了,现在和大家分享一下开发心得。
阅读全文
posted @
2008-07-15 09:08 Windie Chai(笑煞天) 阅读(2013) |
评论 (45) |
编辑
posted @
2008-06-30 01:11 Windie Chai(笑煞天) 阅读(447) |
评论 (9) |
编辑
摘要:

上周尝试了一下发布不久的Silverlight 2 beta2,设计了这么一个简单的播放器widget。它支持循环播放,支持自动播放,支持封面图片,支持暂停(鼠标移动到封面上就会淡入按钮)。
本来是想设计的稍微酷一点的,发现Silverlight2的矩阵变形能力还是相当弱的,其实现的功能也就是平移、平行四边形化和旋转,如果再支持梯形化就好了。
同时,也发现beta2相较之前版本的一些不同之处。
阅读全文
posted @
2008-06-26 09:33 Windie Chai(笑煞天) 阅读(2338) |
评论 (14) |
编辑
摘要: 前段时间简单的研究了一下.NET操作Lotus Notes邮件的实现,具体的操作包括邮件的读取和发送,而且都要包含附件,其间参考了《在 Microsoft .NET 应用程序中使用 IBM Lotus Domino》一文,现在把成果和大家分享一下。
本文将分为获取用户列表、发送邮件、收取邮件三个部分,并会在文末提供范例程序的下载。
阅读全文
posted @
2008-06-17 09:10 Windie Chai(笑煞天) 阅读(743) |
评论 (9) |
编辑
摘要:

在Silverlight 1.1的时候,我就像用Silverlight设计一个饭否Show,无奈1.1时代貌似只能通过Web Services来获取跨域的数据,我认为这是一种别扭的开发方式,再加上1.1对中文并不友好,所以就改用Flash实现了这个饭否Show。
Silverlight 2终于解决了上述的两个问题,支持跨域获取数据,支持中文显示,于是我迫不及待的尝试着开发了一个饭否Show(在Silverlight 2 beta SDK 发布的几日后开始开发,开发完成后便忘记了,-___-|||),下面来简要的分享一下开发过程,也望各位Silverlight前辈不吝指教。
阅读全文
posted @
2008-04-29 09:38 Windie Chai(笑煞天) 阅读(3014) |
评论 (30) |
编辑
摘要: Windows Workflow 其实是一个Runtime,而不是应用程序。在启动工作流之前,宿主进程必须先加载并运行工作流Runtime。宿主进程告诉Runtime要创建什么类型的工作流,Runtime则负责管理工作流的生命周期并通知宿主进程重要的生命周期事件,比如工作流的完成和终结。Runtime并不挑剔它的宿主,宿主可以是台式机上的智能客户端应用程序,也可以是机架上的服务器中运行的ASP.NET进程。所有宿主进程需要做的只是加载.NET 3.0工作流程序集而已。
在本章中,我们将深入探讨Windows Workflow Runtime和它的服务。首先来认识一下日志(Logging)、跟踪(Trackng)和工作流Runtime的配置选项;接着是调度服务(Scheduling Services),调度服务为Runtime执行工作流提供了线程支持;然后是持久化服务,持久化服务允许我们将工作流状态信息保存到持久存储设备;最后,我们将介绍跟踪服务,跟踪服务允许我们监视工作流的执行过程。
阅读全文
posted @
2008-04-21 09:37 Windie Chai(笑煞天) 阅读(2382) |
评论 (13) |
编辑
posted @
2008-04-17 01:21 Windie Chai(笑煞天) 阅读(348) |
评论 (5) |
编辑
摘要: 在Windows Workflow中,一个活动有几种可能的状态?它们之间是如何转换的?如果我们编写自定义复合活动,该如何控制子活动的状态转换?
阅读全文
posted @
2008-04-10 09:30 Windie Chai(笑煞天) 阅读(2674) |
评论 (2) |
编辑
摘要: 话说有一个DIV元素,其内部有一个IMG元素和SPAN元素,不用理会这两个内部元素怎么布局,这不是我要讨论的重点。
为了实现一些特殊的效果,我需要利用TD的onmouseover和onmouseout事件,测试时就会发现如下的状况:
当鼠标移入DIV内部时,onmouseover事件被触发;接着再鼠标移动到DIV内部的IMG或者SPAN元素之上,我们肯定不会认为这时鼠标已经移到了DIV的外边,但奇怪的是onmouseout事件触发了,而且紧接着onmouseover事件也马上被触发了。
这可不是我想要的,那么怎么来“屏蔽”内部元素给外层元素带来的Javascript事件干扰呢?
阅读全文
posted @
2008-03-28 12:10 Windie Chai(笑煞天) 阅读(2226) |
评论 (18) |
编辑
posted @
2008-03-18 09:33 Windie Chai(笑煞天) 阅读(7050) |
评论 (38) |
编辑
摘要: 从根本上来说,采用组成法或继承法来创建自定义活动并没有太大的差别.
而且相对组成发来说,继承法更加容易理解.
在组成法中,我们关注于如何组织自定义活动内的子活动,并且创建了活动属性和执行模型.
而继承法是一种相对更加初级的方法,我们关注的更多的是活动本身所承载的功能.
让我们用继承法编写一个向控制台输出字符串的自定义活动,并为其添加验证器和友好的设计器外观吧.
阅读全文
posted @
2008-03-18 09:33 Windie Chai(笑煞天) 阅读(2262) |
评论 (3) |
编辑
摘要: 引进依赖属性的最终目标是什么?
依赖属性拥有什么功能?
怎样注册依赖属性?
什么时候应该选择依赖属性?
阅读全文
posted @
2008-01-30 10:19 Windie Chai(笑煞天) 阅读(2492) |
评论 (2) |
编辑
摘要: 今天在写一个Flash相册时遇到一个奇怪的问题,MovieClip中的动态文本框无论如何都不显示。通过trace语句可以确定该文本框是有值的,也就是说,这个动态文本框存在并且有值。
既然如此,为什么不显示呢?原来罪魁祸首就是:遮罩。
阅读全文
posted @
2008-01-29 11:20 Windie Chai(笑煞天) 阅读(386) |
评论 (0) |
编辑
摘要: 组合活动就像一个黑盒子,工作流设计器无法获取这个黑盒子内部的属性和事件,除非我们把这些属性和事件曝露给外部世界.
这时便需要利用属性升级(Property promotion),属性升级允许组合活动的设计者去决定属性对于外部世界的可见性.
阅读全文
posted @
2008-01-10 09:36 Windie Chai(笑煞天) 阅读(2562) |
评论 (5) |
编辑
摘要: 今早从Andrew Connell 的blog看到Office 2007全线产品的SP1已经发布了.
下面给出下载页面的地址.
阅读全文
posted @
2007-12-12 10:10 Windie Chai(笑煞天) 阅读(726) |
评论 (0) |
编辑
摘要: 有两种方式可以创建自定义活动,即通过组合的方式和使用继承的方式.
组合是一种简单的创建工作流的方式.我们在设计器中拖拽并配置活动的属性,然后把这个自定义活动封装成一个程序集,这样就可以供其它工作流项目使用了.这种方式的优点是快速并且简单.
使用继承的方式来创建自定义活动,我们需要编写一个类,并使其继承Activity类.也可以继承自Activity的子类从而获得更多的功能.我们可以自定义活动的设计视图,验证,序列化和代码生成.继承的方式允许我们对自定义活动进行更深层次的控制,并且提供了使用自定义代码来扩展Windows Workflow的途径.
阅读全文
posted @
2007-12-07 09:56 Windie Chai(笑煞天) 阅读(2497) |
评论 (1) |
编辑
摘要: 3月份开始读《Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#》一书并写《WF编程》笔记,拖拖拉拉写到现在,居然也翻译了全书的一半。
这期间和很多朋友通过评论、留言、Email和IM等方式(就差写信了)就编写WF程序中遇到的问题进行探讨,套用某新闻节目中经常使用的和谐的五个字:“友好的交流”。
………………华丽的省略号………………
阅读全文
posted @
2007-12-06 10:15 Windie Chai(笑煞天) 阅读(4793) |
评论 (16) |
编辑
摘要: 使用通用的framework来开发软件虽然轻松,但却不够高效.我们每天都会遇到一些问题,只有使用专门面向这些问题的framework来开发软件才是真正的轻松并且高效.通过自定义活动,我们可以为这些日常问题量身打造工作流.自定义活动可以用来解决特定业务领域的问题,譬如,医疗软件中化验病人的血液样本的过程;我们也可以为IT领域编写自定义活动.如果我们的应用程序大量使用了Microsoft Message Queuing(MSMQ),我们就可以创建和MSMQ交互的自定义活动.
这一章将会讲述如何编写自定义活动,并且深入研究实现自定义活动的不同方式.我们会讨论如何使用组合的方式创建黑盒活动和白盒活动;如何使用继承的方式来创建自定义活动;如何创建验证和设计时的行为.接着,我们还会讨论一些相关概念,比如依赖性属性(Dependency Property)和执行上下文(Execution Context).在本章的最后,我们将比较组合和继承这两种创建自定义活动方式,并理解创建自定义活动的要点.
阅读全文
posted @
2007-11-25 23:58 Windie Chai(笑煞天) 阅读(1103) |
评论 (0) |
编辑