目录

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

/weixin_miniapp.png

微软工作流平台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

中的方法。

/weixin_miniapp.png