WCSF - PageFlow Suspend and Resume by UserID
Die Aufgabe ist es die Arbeitsabläufe zu speichern um später weiter zu arbeiten und vielleicht auch weiter zu delegieren.
Wir speichern jeden Vorgang mit dem Benutzernamen ab dazu erstellen wir UserCorrelationTokenProvider was wir später über die Web.config noch bekannt geben werden.
public class UserCorrelationTokenProvider :
IPageFlowCorrelationTokenProvider
{
public string GetCorrelationToken()
{return HttpContext.Current.User.Identity.Name;}
}
Eine Procedure für die Ausgabe aller Instancen mit der UserID als Parameter:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[pageFlow_GetAllInstanceByCorrelationToken]
@correlationToken NVARCHAR(256)
AS
BEGIN
SELECT * FROM dbo.pageFlow_InstanceStore WHERE
CorrelationToken = @correlationToken
END
GO
Zugriff auf die Procedure:
public List<PageFlowInstanceItem> GetInstancesList()
{
List<PageFlowInstanceItem> result = new List<PageFlowInstanceItem>();
using (SqlConnection conn = new SqlConnection(
@"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=
WCSF_QuickStart;Data Source=.\SQLExpress"))
{
using (SqlCommand command = new SqlCommand("pageFlow_GetAllInstanceByCorrelationToken", conn))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter IdIn = command.Parameters.Add("@correlationToken", SqlDbType.VarChar, 255);
IdIn.Direction = ParameterDirection.Input;
IdIn.Value = HttpContext.Current.User.Identity.Name;
conn.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
result.Add(new PageFlowInstanceItem(
"Beschreibung",
reader["InstanceID"].ToString(),
reader["Type"].ToString()));
}
}
}
}
return result;
}
Hiermit ist es möglich die Liste der PageFlows zu lesen, jetzt nur noch aufwecken
IPageFlow flow = PageFlowDirectory.Provider.GetPageFlow(instanceID);
flow.Resume();
flow.RedirectToCurrentPage();
Fertig.
WCSF: www.codeplex.com/websf