`
winzenghua
  • 浏览: 1325019 次
  • 性别: Icon_minigender_2
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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

阅读更多

WF培训课堂笔记

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

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

技术选取的准则:

1.成熟的技术

2.主流的技术

3.熟悉的技术

软件发展的三个阶段:

面向对象 OO

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

面向服务 SOA (Saas)

Application Block

<place w:st="on"><city w:st="on"><span lang="EN-US">Enterprise</span></city></place> Library

Software Factory

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

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

工作流运行环境:

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

前提:必修安装.net framework 2.0

2. VS2005 SP1

3. Workflow foundation

序列图:有向无环图

状态图:可以有环

工作流开发实例

1. HelloWorldWorkFlow

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

包括2个项目:HelloWorldWorkflow WindowsApplication1

2. ExpenceWorkFlows

包括5个项目:

Activities :自定义活动

Services 外部服务

Host 宿主程序,服务端

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

Workflows:工作流

3. Custom Activity

1) 自定义属性

2) 自组合活动

4. Host Workflow

1) WorkflowRuntime生命周期

Start

Load, Unload, Persiste

Stop, Complete, Teminate

Suspend, Resume

Idle

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

5. State Machine Activity

有环的情况

6. WebService

7.改变工作流的结构

static void modifyWorkflowFromHost(WorkflowInstance workflowInstance)

{

if (!workflowUpdated)

{

workflowUpdated = true;

Activity workflowInstanceDefinition = workflowInstance.GetWorkflowDefinition();

WorkflowChanges workflowChangesToMake = new WorkflowChanges(workflowInstanceDefinition); //WorkflowChanges用来改变工作流结构

// remove ifelse

Console.WriteLine("\tHost change to always require approval for");

Console.WriteLine("\tInstanceId: " + workflowInstance.InstanceId);

CompositeActivity ifelse = workflowChangesToMake.TransientWorkflow.Activities["ifElse1Activity"] as CompositeActivity;

workflowChangesToMake.TransientWorkflow.Activities.Remove(ifelse);

// setup to invoke NewStepWorkflow type

InvokeWorkflowActivity invokeNewStepWorkflow = new InvokeWorkflowActivity();

invokeNewStepWorkflow.Name = "AddNewStepWorkflow";

invokeNewStepWorkflow.TargetWorkflow = typeof(DynamicUpdateInWorkflow.Workflow2);

// insert approval workflow

workflowChangesToMake.TransientWorkflow.Activities.Insert(1, invokeNewStepWorkflow);

// apply transient changes to instance

workflowInstance.ApplyWorkflowChanges(workflowChangesToMake);

}

else

{

Console.WriteLine("\tWorkflow has already been updated by the Host");

}

}

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

CD C:\WINDOWS\assembly

CD assembly

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

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

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

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

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

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

VPN + SSL

日志

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

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

分布式系统架构设计

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

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

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 210.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"><font face="Times New Roman" size="3"></font></imagedata></shape>

<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 215.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png"><font face="Times New Roman" size="3"></font></imagedata></shape>

课堂问题

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

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

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

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

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

dll安装到SQL SERVER ,触发器里可以直接调用dll中的方法。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics