zoukankan      html  css  js  c++  java
  • 跟踪workflow instance 状态

    场景是这样的:
    1.workflowruntime启动了持久化和监听服务
    2.workfllowruntime创建多个实例,并启动,一些会长时间延时,一些会中途暂停,会不同的执行状态(业务状态)
    3.另有一winform控制台,有个表格,刷新显示每个实例的信息,包括业务状态--比如创建,运行,挂起等
    4.通过workflowruntime.GetLoadedWorkflows()方法取得所有实例,但却没有办法得到正确的业务状态

    当然,当将实例unload,再load后(实例回写到数据库),通过SqlTrackingQuery查询得到SqlTrackingWorkflowInstance.Status是可以.可是实际上,不可能一刷新实例表格就要将实例unload.所以,在想有没有办法在workflowruntime平台上,获取实例的业务状态. 
    决定自己写个类,解决这个问题,思路如下:
    1.在宿主中构建Dictionary<Guid, TrackingStatus>,用于维护instance状态
    2.预订workflowruntime与instance相关的事件
    3.在事件处理方法中更新instance对应的trackingstatus
    4.定义event WorkflowStatusChangeEventHandler WorkflowStatusChanged事件,以便状态变化时处理

    两个类:
    TrackingStatus

    TrackingWorkflowEvent

    使用方便:
                trackingworkflowevent = new TrackingWorkflowEvent(workflowRuntime);     //创建
                trackingworkflowevent.TackEvent();                                                          //预订事件
                trackingworkflowevent.GetWorkflowStatus(instance);                                       //获取instance状态
                trackingworkflowevent.UntackEvent();                                                     //卸载事件
                trackingworkflowevent.Dispose();                                                             //消毁


  • 相关阅读:
    android 异步加载图片缩略图
    Java小工具===》在目录内查找包含××(字符串)的文件,并显示行号
    android 录像和拍照功能
    基于socket的上传下载(Java)精简版
    android 瀑布流简单例子
    创建上下文菜单及监听
    一个简单的win32截图例子
    把位图保存为文件源代码
    进程间通讯 —— 共享内存
    解决WIN32窗口不响应WM_LBUTTONDBLCLK消息
  • 原文地址:https://www.cnblogs.com/net66/p/541184.html
Copyright © 2011-2022 走看看