目录

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

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

WF培训课堂笔记

EKING

2007-07-30

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

技术选取的准则:

成熟的技术

主流的技术

熟悉的技术

软件发展的三个阶段:

面向对象

OO

面向组件

Component (

事件驱动:事件,代理,委托

)

面向服务

SOA

(Saas)

Application Block

Enterprise

Library

Software Factory

数据库表主键:推荐用

Guid (128

位字符

)

,在

SQL SERVER

中字段默认值

使用内建函数

newid()

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

工作流运行环境:

  1. .net framework 3.0

(2.0

的扩展版本

)

前提:必修安装

.net framework 2.0

  1. VS2005 SP1

  2. Workflow foundation

序列图:有向无环图

状态图:可以有环

工作流开发实例

1. HelloWorldWorkFlow

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

包括

2

个项目:

HelloWorldWorkflow

WindowsApplication1

2. ExpenceWorkFlows

包括

5

个项目:

Activities

:自定义活动

Services

外部服务

Host

宿主程序,服务端

Application

:客户端调用程序

(.net remoting

调用

)

Workflows

:工作流

3. Custom Activity

自定义属性

自组合活动

4. Host Workflow

  1. WorkflowRuntime

生命周期

Start

Load, Unload, Persiste

Stop, Complete, Teminate

Suspend, Resume

Idle

  1. 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” );

}

}

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

CD C:/WINDOWS/assembly

CD assembly

Dir

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

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

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

我有什么:身份卡

(如微软使用

SmartClient

我是什么:

生物技术(指纹技术)

微软外部员工登陆内部系统:用户名

/

密码

  • SmartClient

VPN + SSL

日志

四个级别:

Error, Warning, Info, Verbose

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

分布式系统架构设计

VS2005

新建

〉项目

〉分布式系统架构

课堂问题

经常出现

“Error loading workflow”

,是什么问题?

(

查看

xoml

文件?

)

工作流页面定向的

URL

在哪里可以设置?

使用

DataSet

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

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

SQL SERVER 2005

内建对

.net2.0 clr

的支持

dll

安装到

SQL SERVER

,触发器里可以直接调用

dll

中的方法。