0

J'ai une implémentation de workflow personnalisée qui nécessite une mise à jour d'une base de données externe. J'ai créé un flux de travail simple à des fins de texte et j'ai trouvé une chose étrange!Exécution répétée de l'activité de code dans le flux de travail SharePoint?

mon Db Code mise à jour/insert est placé dans une activité de code du flux de travail. il semble que l'activité de code est exécutée plusieurs fois lorsque le flux de travail est appelé sur un élément de liste simple dans la liste personnalisée sharepoint. Voici mon flux de travail:

workflow-image

et mon code est:

private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e) 
{ 
    workflowProperties.Item["Title"] = "Processed by workflow at "+ DateTime.Now; 
    workflowProperties.Item.Update();  

} 

private void codeActivity1_ExecuteCode(object sender, EventArgs e) 
{ 
    Random rnd = new Random(); 

    string conStr = "Data Source=192.168.1.57\\TRIBIRD;Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXXXXXX"; 
    SqlConnection connection = new SqlConnection(conStr); 
    SqlCommand command = connection.CreateCommand(); 
    command.CommandType = System.Data.CommandType.Text; 
    command.CommandText = "INSERT INTO XXXX VALUES(" + rnd.Next() + ",'THE CONTENT FROM SHAREPOINT WORKFLOW','EN',1,1,'BRT')"; 

    connection.Open(); 
    command.ExecuteNonQuery(); 
    command.Dispose(); 
    connection.Close(); 
} 

dans le DB i obtenir plus de 1 ligne pour l'exécution du flux de travail! chose intéressante est, au cours de chaque exécution, le nombre de lignes ajoutées varie.

Pourquoi cela se produit-il? quelle est mon erreur?
Toutes les idées et suggestions sont les bienvenues.

Répondre

0

Assurez-vous que vous utilisez les derniers correctifs et mises à jour pour SharePoint.

versions plus tôt en 2007 permettrait à l'auto-déclencheurs cycliques (par exemple, re-déclenchement). Les versions ultérieures ne le font pas (mais permettent toujours des déclenchements co-cycliques). Je suspecte que c'est le problème et une "cascade" commence par la méthode Update. Juste une intuition.

Cela devrait être fixé dans le Service Pack 2: Service Pack 2 prevents an on-change workflow from starting itself

+0

@pst .. merci pour la solution de info..any à cela? mon flux de travail réel aura un processus d'approbation entre et seulement après l'approbation de l'élément, les données sont mises à jour/insérées dans la base de données externe. une meilleure pratique ou une autre solution à ce problème? –

+0

@Abdel J'ai mis à jour ma réponse avec un (heureusement) lien utile. Si ce problème est dû à un événement on-change, SP2 doit corriger le comportement observé. Lorsque j'ai créé des flux de travail (ce son), je maintiens le processus de workflow à court et maintient l'état dans l'élément lui-même. Ensuite, je pars du principe que l'élément NE SERA PAS MODIFIÉ EXTERNALEMENT pendant que le flux de travail est en cours d'exécution (le flux de travail lui-même peut changer l'élément, SP2 empêche un nouveau déclenchement). Avec cette hypothèse et le correctif SP2, tout fonctionne bien. –

+0

@pst, j'ai fait une mise à niveau et ne fonctionne toujours pas !! Je vais essayer de redéployer le workflow et tester ... –

Questions connexes