2012-10-10 3 views
0

내 질문에 어리석은 생각이 든다면 실례지만 워크 플로가 완전히 새로운 것 같습니다. 내가 뭘하려고하는지 : 워크 플로 파운데이션 프로젝트와 ASP.NET 응용 프로그램에서 데이터베이스 히트가 있습니다. 달성하기 위해 노력하고있는 것은 동일한 트랜잭션에서 Workflow 기반과 ASP.NET 내부에서 데이터베이스 작업을 수행하는 것입니다. 가능하다고 말해줘? linq2sql을 사용하고 있습니다. 나는 그렇게 생각하지 않습니다워크 플로에서 동일한 트랜잭션 사용

using(var context = new MyDBContext()) 
{ 
    context.Transaction = context.Connection.BeginTransaction(); 

    //Here I am calling my Workflow function 

    using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) 
    { 
     AutoResetEvent waitHandle = new AutoResetEvent(false); 
     workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) 
     { 
      waitHandle.Set(); 
      if ((string)e.OutputParameters["OutputMessage"] != "") 
       msg = "Workflow error : " + (string)e.OutputParameters["OutputMessage"]; 
     }; 
     workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) 
     { 
      Console.WriteLine("ERROR: " + e.Exception.Message); 
      waitHandle.Set(); 
     }; 

     WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(MyWorkflow),   parameters); 
     instance.Start();    
     waitHandle.WaitOne(); 
    } 

    //DB Operation in ASP.NET 
    context.DbOperation(); 
    context.SubmitChanges(); 
    context.Transaction.Commit(); 
} 

답변

1

:

여기 내 코드입니다. instance.Start() 즉시 반환. 실제 워크 플로우 활동은 다른 스레드에서 실행될 수 있습니다 (잠재적으로 다른 프로세스 또는 다른 시스템에서 실행 됨). 워크 플로우 내에서 트랜잭션을 관리해야합니다.

+0

워크 플로 내에서 트랜잭션을 관리하는 경우에도 전체 트랜잭션을 하나의 트랜잭션에 넣을 수 있습니까? 내 DB 작업의 50 %는 웹 응용 프로그램에, 50 %는 워크 플로에 있음을 의미합니다. –

+0

데이터베이스에서 읽은 데이터로 워크 플로를 공급하고 워크 플로를 처리하고 워크 플로가 종료 될 때 데이터베이스 만 업데이트하도록 할 수 있습니다. – xing

+0

당신은 워크 플로에 대한 매개 변수로 전체 데이터를 전달하고 db 작업을 수행해야합니까? –

관련 문제