2011-12-29 2 views
1

Je crée un script LINQPad où je veux obtenir les résultats suivants:Modifier le propriétaire d'un flux de travail

1) Assigner tous les projets et les flux de travail actifs pour me 2) Activer tous les projets de flux de travail

Mon problème est que si j'essaie de changer le propriétaire d'un flux de travail actif, j'obtiens une erreur disant que je ne peux pas mettre à jour le flux de travail parce qu'il est actif. Si j'essaie de désactiver, alors je me trompe en disant que je ne suis pas le propriétaire (d'où je ne suis pas autorisé). C'est déroutant parce que je peux facilement le faire via l'interface utilisateur.

Le code que je utilise pour mettre à jour le propriétaire:

var systemUser = 
var workflow = ...; 
workflow.OwnerId = systemUser.ToEntityReference(); 
UpdateObject(workflow); 
SaveChanges(); //exception: Cannot update a published workflow definition 

Le code que je utilise pour désactiver flux de travail:

var request = SetStateRequest { 
    EntityMoniker = workflow.ToEntityReference(), 
    State = new OptionSetValue(/*state value*/), 
    Status = new OptionSetValue(/* status value*/) 
}; 
service.Execute(request); //exception: The workflow cannot be published or unpublished by someone who is not its owner 

Répondre