Sharepoint.Dev() Just another SharePoint weblog

23Nov/090

Cancelar Workflow via programação

No último projeto tivemos que dar a possibilidade para o usuário encerrar o andamento do fluxo manualmente. Para isso um método foi criado:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(siteID))
    {
          using (SPWeb web = new SPWeb(relativeWeb))
         {
              SPWorkflowManager manager = site.WorkflowManager;
              SPListItem item = web.Lists[listname].GetItemByID(itemID);
              foreach(SPWorkflow workflow in manager.GetItemActiveWorkflows(item))
              {
                       SPWorkflowManager.CancelWorkflow(workflow);
              }
          }
    }
});

Detalhe para o "SPSecurity.RunWithElevatedPrivileges()" que faz com que o código possa ser executado por qualquer usuário que esteja logado.

O código que está no nosso projeto não é exatamente este, não coloquei algumas ações específicas do nosso projeto, mas basicamente para encerrar o fluxo, que é o tema deste post é esse!

Até a próxima!

Referencia: http://pointstoshare.spaces.live.com/Blog/cns!AEC42F315B4528B0!3045.entry?sa=648616426