none
ASP.net MVC workflow foundation 4 RRS feed

  • Discussion générale

  • bonjour, j'ai une question urgente veuillez m'aider svp,

    j'ai un workflow qui modelise orders state : open, cancelled,....

    voila le code:

    controller:

     [HttpPost]
            public ActionResult Create(Order o)
            {
                wfOrderCommon.Orders.Order order=wfOrderCommon.Orders.Order.CreateOrder();
                order.Title = o.Title;
                OrderService.Instance.CreateOrder(order);
       
                return View(order);
            }

    OrderService.cs:

     public class OrderService : IOrderService
        {
            public bool CreateOrder(Order order)
            {
                Check.ArgumentIsNotNull(order, "order");

                // create order must first create the workflow, then raise event, then run again
                WorkflowResults workflowResults = WorkflowMediator.Instance.RunWorkflow(typeof(OrderStateMachine));
                Check.IsNotNull(workflowResults, "Could not harvest workflow results");
                VerifyResults(workflowResults, WorkflowStatus.Running);
                order.WorkflowId = workflowResults.InstanceId;

                bool eventResult = RaiseEvent(OrderCreated, order, order.WorkflowId);
                if (eventResult == true)
                {
                    workflowResults = WorkflowMediator.Instance.RunWorkflow(order.WorkflowId);
                    Check.IsNotNull(workflowResults, "Could not harvest workflow results");
                    VerifyResults(workflowResults, WorkflowStatus.Running);

                }
                return eventResult;
            }

    WorkflowMediator.cs

       public WorkflowResults RunWorkflow(Guid instanceId)
            {
                Check.IsNotTrue(instanceId == Guid.Empty, "Invalid Workflow Instance ID");
                WorkflowInstance instance = _workflowRuntime.GetWorkflow(instanceId);
                Check.IsNotNull(instance, "Could not retrieve workflow");

                bool result = WorkflowScheduler.RunWorkflow(instance.InstanceId); //blocage a ce niveau la ou on appelle UpdateOrderActivity
                Check.IsTrue(result, "Could not run workflow "
                                    + instance.InstanceId);
                return CurrentResultsInContext;
            }

         UpdateOrderActivity.cs

       protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
            {
                if (Order != null) //Order=null je ne sais pas pourquoi
                {
                    Order.State = State;
                    Order.WorkflowId = WorkflowInstanceId;

                    IOrderTransactionService txnService = executionContext.GetService<IOrderTransactionService>();
                    txnService.UpdateOrder(Order);
                }

                return ActivityExecutionStatus.Closed;
            }

    • Type modifié Aurel Bera vendredi 25 avril 2014 12:57 disc
    lundi 21 avril 2014 08:29

Toutes les réponses

  • Bonjour,

    Et c'est quoi votre question ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    lundi 21 avril 2014 23:56
    Modérateur
  • J'obtiel Order=null dans le fichier UpateOrderActivity. SVP si vous connaissez un bon exemple de workflow foundation state machine avec ASP.net MVC3 veuillez me donner le lien.
    mardi 22 avril 2014 08:40
  • Bonjour,

    C'est assez difficile de voir d'où vient le problème... Pouvez-vous nous soumettre un exemple complet qui reproduit le problème ? (Dans une archive zip que rendrez disponible sur Skydrive par exemple...).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    mercredi 23 avril 2014 00:27
    Modérateur