Example #1
0
 /// <summary>
 /// 绑定工作流生命周期
 /// </summary>
 /// <param name="Frm">工作流挂载窗体</param>
 /// <param name="Instance">工作流实例</param>
 /// <param name="StoreSource">持久化数据库</param>
 public static void BindLifeCycle(Frm_BaseFlow Frm, WorkflowApplication Instance, SqlWorkflowInstanceStore StoreSource = null)
 {
     if (StoreSource != null)
     {
         Frm.Instance.InstanceStore = StoreSource;
     }
     Instance.Completed            = Frm.Completed;
     Instance.OnUnhandledException = Frm.OnUnhandledException;
     Instance.Unloaded             = Frm.Unloaded;
     Instance.Aborted         = Frm.Aborted;
     Instance.Idle            = Frm.Idle;
     Instance.PersistableIdle = Frm.PersistableIdle;
     Frm.Show();
 }
Example #2
0
        /// <summary>
        /// (从数据库中)恢复工作流
        /// </summary>
        /// <param name="ActivityType">工作流类型</param>
        /// <param name="WorkFlowID">要恢复的工作流ID</param>
        /// <param name="BookName">恢复的书签节点</param>
        /// <param name="Value">传入的值</param>
        public static RecoveryFlowState AwakenWorkFlow(Type ActivityType, Guid WorkFlowID, string BookName, object Value, Frm_BaseFlow Frm)
        {
            WorkflowApplication Instance = new WorkflowApplication((Activity)Activator.CreateInstance(ActivityType));

            Instance.InstanceStore = new SqlWorkflowInstanceStore("Data Source=.;Initial Catalog=MyOA;Integrated Security=True");
            BindLifeCycle(Frm, Instance);
            try
            {
                Instance.Load(WorkFlowID);
                Instance.ResumeBookmark(BookName, Value);
            }
            catch (Exception ex)
            {
                if (ex.Message.IndexOf("尚未保留到实例存储区") > 0)
                {
                    return(RecoveryFlowState.NoSaveInstance);
                }
                if (ex.Message.IndexOf("其他实例所有者锁定了实例") > 0)
                {
                    return(RecoveryFlowState.OthersInUse);
                }
            }
            return(RecoveryFlowState.Done);
        }