private static Guid CreateAndRun(IDictionary<string, object> data, Activity activity)
        {
            SqlWorkflowInstanceStore instanceStore = new SqlWorkflowInstanceStore(ConnectString);
            WorkflowApplication application = new WorkflowApplication(activity, data);
            application.InstanceStore = instanceStore;

            application.PersistableIdle = (e) =>
            {
                return PersistableIdleAction.Unload;
            };

            application.Persist();
            Guid id = application.Id;

            application.Run();
            return id;
        }
        /// <summary>
        /// 创建并启动一个工作流,在申请时候触发
        /// </summary>
        /// <param name="meeting">申请时所填表单的数据</param>
        /// <returns>返回一个Guid</returns>
        public static Guid CreateAndRun(Model.Meeting meeting, Dictionary<int, int> d_EquipmentCount,Dictionary<string,string> MeetingUserNameAndEmail,Model.MeetingRoom MeetingRoomIDAndName)
        {
            SqlWorkflowInstanceStore instanceStore = new SqlWorkflowInstanceStore(connectionString);
            InstanceView view = instanceStore.Execute(instanceStore.CreateInstanceHandle(), new CreateWorkflowOwnerCommand(),TimeSpan.FromDays(30));

            instanceStore.DefaultInstanceOwner = view.InstanceOwner;

            IDictionary<string, object> input = new Dictionary<string, object>();
            input.Add("Request",meeting);
            input.Add("EquipmentCount",d_EquipmentCount);
            input.Add("MeetingUserEmailFrom", MeetingUserNameAndEmail);
            input.Add("MeetingRoomIDAndName", MeetingRoomIDAndName);
            WorkflowApplication application = new WorkflowApplication(new MeetingApply(),input);

            application.InstanceStore = instanceStore;
            application.PersistableIdle = (e) =>
            {
                instanceUnloaded.Set();
                return PersistableIdleAction.Unload;
            };

            application.Unloaded = (e) =>
            {
                instanceUnloaded.Set();
            };

            application.OnUnhandledException = (ex) =>
            {
                return UnhandledExceptionAction.Terminate;
            };

            Guid id = application.Id;
            application.Persist();
            application.Run();
            instanceUnloaded.WaitOne();
            return id;
        }
Beispiel #3
0
        static void StartAndUnloadInstance()
        {
            WorkflowApplication application = new WorkflowApplication(activity);

            application.InstanceStore = instanceStore;

            //returning IdleAction.Unload instructs the WorkflowApplication to persists application state and remove it from memory
            application.PersistableIdle = (e) =>
                {
                    return PersistableIdleAction.Unload;
                };

            application.Unloaded = (e) =>
                {
                    instanceUnloaded.Set();
                };

            //This call is not required
            //Calling persist here captures the application durably before it has been started
            application.Persist();
            id = application.Id;
            application.Run();

            instanceUnloaded.WaitOne();
        }