微软工作流平台WF培训笔记(2天)

WF培训课堂笔记

EKING   <st1:chsdate month="7" islunardate="False" day="30" year="2007" w:st="on" isrocdate="False">2007-07-30</st1:chsdate>

<o:p> </o:p>

<o:p>        因项目工作流平台的选型需要,近日部门邀请微软培训讲师徐晓卓老师给我们作了2天的微软工作流平台的全面介绍与技术培训。</o:p>

技术选取的准则:

1.成熟的技术

2.主流的技术

3.熟悉的技术

<o:p> </o:p>

<o:p> </o:p>

软件发展的三个阶段:

面向对象 OO

面向组件 Component (事件驱动:事件,代理,委托)

面向服务 SOA  (Saas)

<o:p> </o:p>

Application Block

<st1:place w:st="on"><st1:city w:st="on">Enterprise</st1:city></st1:place> Library

Software Factory

<o:p> </o:p>

数据库表主键:推荐用Guid (128位字符),在SQL SERVER 中字段默认值 使用内建函数 newid()

好处:数据整合时主键不会重复

工作流运行环境:

1. .net framework 3.0  (2.0的扩展版本)

   前提:必修安装.net framework 2.0

2. VS2005 SP1

3. Workflow foundation

<o:p> </o:p>

序列图:有向无环图

状态图:可以有环

<o:p> </o:p>

工作流开发实例

1. HelloWorldWorkFlow

基本顺序工作流,包括工作流初始化参数

包括2个项目:HelloWorldWorkflowWindowsApplication1

2. ExpenceWorkFlows

包括5个项目:

Activities :自定义活动

Services: 外部服务

Host  宿主程序,服务端

Application:客户端调用程序 (.net remoting调用)

Workflows:工作流

3. Custom Activity

1) 自定义属性

2) 自组合活动

4. Host Workflow

1) WorkflowRuntime的生命周期

Start

Load, Unload, Persiste<o:p></o:p>

Stop, Complete, Teminate<o:p></o:p>

Suspend, Resume<o:p></o:p>

Idle

<o:p> </o:p>

2) GetInstanceTrackingEvents(Guid instanceId)在何时被调用?

<o:p> </o:p>

5. State Machine Activity  

有环的情况

6. WebService

7.改变工作流的结构

static void modifyWorkflowFromHost(WorkflowInstance workflowInstance)<o:p></o:p>

              {<o:p></o:p>

                   if (!workflowUpdated)<o:p></o:p>

                   {<o:p></o:p>

                       workflowUpdated = true;<o:p></o:p>

<o:p> </o:p>

                       Activity workflowInstanceDefinition = workflowInstance.GetWorkflowDefinition();<o:p></o:p>

                    WorkflowChanges workflowChangesToMake = new WorkflowChanges(workflowInstanceDefinition); //WorkflowChanges用来改变工作流结构<o:p></o:p>

<o:p> </o:p>

                       // remove ifelse<o:p></o:p>

                       Console.WriteLine("\tHost change to always require approval for");<o:p></o:p>

                       Console.WriteLine("\tInstanceId: " + workflowInstance.InstanceId);<o:p></o:p>

<o:p> </o:p>

                       CompositeActivity ifelse = workflowChangesToMake.TransientWorkflow.Activities["ifElse1Activity"] as CompositeActivity;<o:p></o:p>

                       workflowChangesToMake.TransientWorkflow.Activities.Remove(ifelse);<o:p></o:p>

<o:p> </o:p>

                       // setup to invoke NewStepWorkflow type<o:p></o:p>

                       InvokeWorkflowActivity invokeNewStepWorkflow = new InvokeWorkflowActivity();<o:p></o:p>

                       invokeNewStepWorkflow.Name = "AddNewStepWorkflow";<o:p></o:p>

                       invokeNewStepWorkflow.TargetWorkflow = typeof(DynamicUpdateInWorkflow.Workflow2);<o:p></o:p>

<o:p> </o:p>

                       // insert approval workflow<o:p></o:p>

                       workflowChangesToMake.TransientWorkflow.Activities.Insert(1, invokeNewStepWorkflow);<o:p></o:p>

<o:p> </o:p>

                       // apply transient changes to instance<o:p></o:p>

                       workflowInstance.ApplyWorkflowChanges(workflowChangesToMake);<o:p></o:p>

                   }<o:p></o:p>

                   else<o:p></o:p>

                   {<o:p></o:p>

                       Console.WriteLine("\tWorkflow has already been updated by the Host");<o:p></o:p>

                   }<o:p></o:p>

              }

www.dinnernew.net : 大型分布式应用的例子,食品方面,里面有很多新技术(工作流,mmc)

CD C:\WINDOWS\assembly

CD assembly

Dir  可以看到所有共享的程序集目录

<o:p> </o:p>

<o:p> </o:p>

网络安全 多重身份认证(一般三选二)

1) 我知道什么:用户名,密码

2) 我有什么:身份卡 (如微软使用 SmartClient

3) 我是什么: 生物技术(指纹技术)

<o:p> </o:p>

微软外部员工登陆内部系统:用户名/密码 + SmartClient

                          VPN + SSL

<o:p> </o:p>

<o:p> </o:p>

日志

1.       四个级别:Error, Warning, Info, Verbose

2.       一定要有日志开关,并且各个级别都要做开关

<o:p> </o:p>

分布式系统架构设计

VS2005 : 新建-〉项目-〉分布式系统架构

<v:shapetype o:spt="75" coordsize="21600,21600" stroked="f" id="_x0000_t75" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape type="#_x0000_t75" id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 220.5pt"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title=""></v:imagedata></v:shape>

<o:p> </o:p>

<o:p> </o:p>

<v:shape type="#_x0000_t75" id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 210.75pt"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.png" o:title=""></v:imagedata></v:shape>

<o:p> </o:p>

<o:p> </o:p>

<v:shape type="#_x0000_t75" id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 215.25pt"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.png" o:title=""></v:imagedata></v:shape>

课堂问题

1.       经常出现 “Error loading workflow”,是什么问题? (查看xoml文件?)

2.       工作流页面定向的URL在哪里可以设置?

3.       使用DataSet进行批量数据处理:插入,更新,删除。减少数据库的往返层次和打开关闭的次数。

4.       安全问题考虑:最小权限原则,连接字符串的加密原则。

5.       SQL SERVER 2005 内建对 .net2.0 clr的支持

dll安装到SQL SERVER ,触发器里可以直接调用dll中的方法。 <o:p></o:p>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值