惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
L
LangChain Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
V
V2EX
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
SegmentFault 最新的问题
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
Spread Privacy
Spread Privacy
Project Zero
Project Zero
腾讯CDC
Engineering at Meta
Engineering at Meta
T
Tenable Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
量子位
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
T
Troy Hunt's Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
N
News and Events Feed by Topic
T
Tor Project blog
H
Help Net Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Last Week in AI
Last Week in AI
S
Security Affairs
小众软件
小众软件
Scott Helme
Scott Helme
云风的 BLOG
云风的 BLOG
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
TaoSecurity Blog
TaoSecurity Blog
博客园 - 叶小钗
V
Visual Studio Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements

博客园 - 我是蚂蚁

企业销售管理现状分析与解决思路 对正则表达式不熟悉,记录几个从别处拿来验证过的表达式,日期、数字、email、网址验证 WCF 关于自定义MessageHeader支持 如何识别真正的程序员 (转帖 来自csdn) 忙忙碌碌,早出晚归咱们到底为个啥? 2008年业务、技术学习计划 记录一下,开车以来最惨痛的教训! 针对 WCF 数据压缩开发包压缩效率的测试比较 总结,对自己对团队对项目的总结 WF 状态机 事件传参详细步骤 关于 WCF 中数据压缩的几篇文章 msdn杂志关于wcf\wwf的相关文章 - 我是蚂蚁 - 博客园 关于wf中传参的问题:如何在workflow实例钝化后重新load时传参! Pro WF Windows Workflow in NET3 -- 学习笔记 -- 状态机 -- 汽车驾驶操作示例 Pro WF Windows Workflow in NET3 -- 学习笔记 -- 状态机 (不)相信 --- 龙应台 推荐阅读 《Pro WCF Practical Microsoft SOA Implementation》 关于中小企业信息化命题的阶段性总结 WCF 学习研究 推荐blog
WF 工作流实例持久化几点说明
我是蚂蚁 · 2007-11-30 · via 博客园 - 我是蚂蚁

WF工作流实例持久化(钝化)在工作流项目中相当的重要,在实际业务中几乎所有的业务流都需要较长时间才能执行完毕,这样就需要把未完成的业务流持久化到数据库或者文件中。

WF自身提供了SqlWorkflowPersistenceService服务以支持实例持久化。

public SqlWorkflowPersistenceService( string connectionString, bool unloadOnIdle, TimeSpan instanceOwnershipDuration, TimeSpan loadingInterval )
参数说明:
connectionString:数据库连接字符串

unloadOnIdle:是否启用自动钝化
instanceOwnershipDuration:锁定持续时间
loadingInterval:引擎轮询检测时间间隔

对数据库连接字副串就不需要多讲了,关键在后面三个参数。
unloadOnIdle在我们目前看到MS提供的例子中都是设为true的,这样好处是我们不用关心持久化问题,工作流引擎会自动实现(空闲的时候进行持久化操作)。我一般都是设置为false,通过workflowruntime的Idled事件来完成持久化。
曾经在网上看到有朋友说如果设置为true会产生很操蛋的问题:实例一旦被持久化,我们从数据库retrieve这个实例后,就没有办法使用了,具体表现是工作流不能接收调用方发起的事件,经过测试好像不存在这个问题,至少目前没有发现这个情况(也有可能vs2008 RTM版本附带的wf已经不存在这个问题)

instanceOwnerShipDuration:这个参数设置了工作流实例加载后被引擎锁定时间,强烈建议不要设置为0,一旦为0就等于不锁定了,结果就是谁都可以retrieve这个实例,这就违背了workflow的原则(一家之言)。具体时间的长短根据业务类型的不同做适当调整。

loadingInterval:通过它完成系统的自动化操作,具体有那些作用俺也没有测试出来:(不过不建议设置时间太短,太短会对数据库造成压力,从事件探查器可以看到WorkflowRuntime在不挺的访问数据库。

SqlWorkflowPersistenceService服务主要依赖InstanceState、CompletedScope
InstanceState表记录了还没有执行完成的工作流实例,CompletedScope协助完成对工资流事务的支持。
InstanceState表字段说明:
uidInstanceID:实例Id,建议跟业务单据Id绑定在一起,如果您的系统是用int或者其他类型的主键就比较麻烦了。
state:工作流实例被持久化的内容,从目前测试的情况看不单纯有工作流实例的内容,可能还加进去了其他的东东,因为没有学习如何自定义WorkflowPersistenceService,所以这个字段具体保存了那些数据还不清楚。
status:状态,不知道干啥用的,因为我测试的时候他的值一直是0.
unlocked:测试的时候他的值一直是1.
blocked:实例是否被锁定。
info:一直为空,含义未知
ownerID:实例所有者,就是这个实例是被“谁”Load的,是workflowruntime跟当前的应用生成的唯一Id。winform应用host每次加载后的值都是不同的,如果是wcf或者webservice服务host工作流,只要这些服务不所使用的承载方不重启,那么这个值就是不变的,一旦重启workflowruntime会生成新的ownerID。
ownedUntil:实例被所有者持有的到期时间,这个值跟SqlWorkflowPersistenceService中的instanceOwnershipDuration参数有关联,实例被retrieve的时间加上instanceOwnershipDuration设置的时间就是 ownedUntil的值。
nextTimer:实例失效时间,值一直是9999-12-31 23:59:59,不知道那些动作会影响它。

在workflow项目中一般要进行的操作有:创建工作流,创建工作流实例,加载工作流实例,调用事件。。。。

在创建工作流、实例时, InstanceState表中  blocked为0, ownerID、 ownedUntil都为null;
加载时,blocked为1, ownerID、 ownedUntil都写入了相应的值不为空了;

如果blocked为0, ownerID、 ownedUntil都为null的实例是可以被任何引擎加载的,因为这个状太下没有“人”在使用它。
如果blocked为1, ownerID、 ownedUntil不为null,说明这个实例已经被某个引擎加载并锁定了,这样其他的就不能操作这个实例了,如果您强行调用就会报System.Workflow.Activities.EventDeliveryFailedException 错,InnerException: System.Workflow.Runtime.QueueException
如果blocked为1, ownerID、 ownedUntil为null,说明这个已经被重新持久化到数据库,可以被其他引擎使用了。

下回将做测试用的例子整理一下

--畅所欲言,随心而谈--
本博客文章全部原创,转载请注明出处,谢谢
紫辰友创软件公司 http://www.bornsun.net/
版权所有 jiabao.cnblogs.com 转载请联系