public WorkflowInstance LoadWorkflow(Guid instanceId) { var instance = this._repository.LoadWorkflowInstance(instanceId); var activity = Helpers.LoadWorkflowActiovityFromXaml(this._workflowRepositoryPath + instance.WorkflowName, this._errorLogger); if (activity != null) { WorkflowApplication app = new WorkflowApplication(activity); app.Extensions.Add(() => { SQLTrackingPaticipant participant = new SQLTrackingPaticipant(); participant.ConnectionString = _connectionString; participant.TrackingProfile = CreateTrackingProfile(); return(participant); }); if (this._isPersistable) { //setup persistence InstanceStore store = new SqlWorkflowInstanceStore( this._connectionString); InstanceHandle handle = store.CreateInstanceHandle(); InstanceView view = store.Execute(handle, new CreateWorkflowOwnerCommand(), TimeSpan.FromSeconds(30)); handle.Free(); store.DefaultInstanceOwner = view.InstanceOwner; app.InstanceStore = store; app.PersistableIdle = (e) => { return(PersistableIdleAction.Persist); }; } try { app.Load(instanceId); app.Run(); instance.SetApplicationhost(app); instance.SetWorkflowInstanceHandeler(this); instance.State = InstanceState.Loaded; instance.InstanceId = instanceId; this._managedWorkflows.Add(instance); this._repository.UpdateWorkflowInstanceState(app.Id, InstanceState.Loaded, instance.Bookmarks.ConvertStringListToCommaSeparatedString()); return(instance); } catch (Exception ex) { this._errorLogger.Log(ex.Message, LoggerInfoTypes.Error); } } return(null); }
public Guid NewWorkFlow(string workflowName, IDictionary <string, object> parameters) { var activity = Helpers.LoadWorkflowActiovityFromXaml(this._workflowRepositoryPath + workflowName, this._errorLogger); if (activity != null) { WorkflowApplication app = new WorkflowApplication(activity, parameters); app.Extensions.Add(() => { SQLTrackingPaticipant participant = new SQLTrackingPaticipant(); participant.ConnectionString = _connectionString; return(participant); }); if (this._isPersistable) { //setup persistence InstanceStore store = new SqlWorkflowInstanceStore( this._connectionString); InstanceHandle handle = store.CreateInstanceHandle(); InstanceView view = store.Execute(handle, new CreateWorkflowOwnerCommand(), TimeSpan.FromSeconds(30)); handle.Free(); store.DefaultInstanceOwner = view.InstanceOwner; app.InstanceStore = store; app.PersistableIdle = (e) => { return(PersistableIdleAction.Unload); }; } try { app.Run(); var wfinstance = new WorkflowInstance(workflowName, this, app); wfinstance.State = InstanceState.Created; wfinstance.InstanceId = app.Id; this._managedWorkflows.Add(wfinstance); this._repository.SaveWorkflowInstanceState(app.Id, workflowName, InstanceState.Created, string.Empty); return(app.Id); } catch (Exception ex) { this._errorLogger.Log(ex.Message, LoggerInfoTypes.Error); } } return(Guid.Empty); }