Comment dois-je écrire SCHEMA comme code? Ou devrais-je utiliser quelque chose comme Windows Workflow Foundation?
Question
J'enquête sur la meilleure façon d'élaborer / code un organigramme comme scénario.
Par exemple, étant donné le schéma suivant je pourrais écrire le pseudo-code en dessous pour satisy les exigences. Cependant, comme l'organigramme change, cela deviendrait difficile à maintenir. En outre, il y a une quantité juste de duplication qui, encore une fois, ne ferait qu'empirer lorsque le organigramme devient plus complexe.
Le problème est que je suis en train de résoudre exactement ce que Windows Workflow Foundation est pour? Ou serait-ce trop pénalisantes une approche pour la tâche à accomplir?
Peut-être il y a une solution évidente, je suis avec vue? Merci pour votre aide!
(P.S. Je dois dire que je suis à la recherche d'une solution .NET)
.. et le code de pseudo ...
Public Function Inbox() as Result
If IsItImportant() Then
If IsItUrgent() Then
If IsItBestUseOfMyTime() Then
If WillItTakeMoreThan15Mins() Then
Return Result.ProjectList
Else
If CanDoItNow() Then
Return Result.Now
Else
If DoesItHaveDeadline() Then
Return Result.Calendar
Else
Return Result.NextAction
End If
End If
End If
Else
Return Result.Delegate
End If
Else
If IsItActionable() Then
If IsItBestUseOfMyTime() Then
If WillItTakeMoreThan15Mins() Then
Return Result.ProjectList
Else
If CanDoItNow() Then
Return Result.Now
Else
If DoesItHaveDeadline() Then
Return Result.Calendar
Else
Return Result.NextAction
End If
End If
End If
Else
Return Result.Delegate
End If
Else
If IsItReferenceMaterial() Then
Return Result.File
Else
Return Result.Trash
End If
End If
End If
Else
If IsItWant() Then
Return Result.Someday
Else
Return Result.Trash
End If
End If
End Function
La solution
Cela ne semble comme un très bon moyen pour WF4. WF4 est beaucoup plus léger que vous attendez. J'ai des flux de travail relativement complexes contenant des activités personnalisées qui exécutent en millisecondes. En outre, il est très facile de créer des activités personnalisées qui simplifient la création de flux de travail plus facile. Et la surface de conception étant WPF permet de créer DESIGNERS un jeu d'enfant.
Autres conseils
Workflow Foundation est destinée à longs processus en cours d'exécution (jours, semaines, mois) qui peut « aller dormir » sur un ordinateur et « réveiller » sur un autre. Un exemple est un système mal à ticket, où le flux de travail commence sur le poste de travail de la personne qui a signalé le problème, peut « réveiller » dans un endroit serveur qui décide qui poignées département il, se réveille à nouveau dans le système de ce département et pourrait être plus traitées par les gestionnaires, les services d'assurance qualité, les services de facturation et ainsi sur.
Sans plus de détails sur votre problème, ce que vous cherchez ne ressemble pas à ce que le WWF est conçu pour, et si vous deviez essayer d'utiliser le WWF vous finiriez probablement avec un système beaucoup trop complexe pour maintenir.
Le problème de l'écriture de code de manière à ce qu'il reste maintenable est un ancien, et il est ce que la plupart des mots à la mode CS tentent de résoudre: Programmation descendante, programmation orientée objet, CASE, UML, injection de dépendance et bientôt.
Dans votre cas, il se peut que vous avez juste besoin d'une combinaison de programmation descendante (commencer par votre organigramme, puis écrire comme pseudo-code, puis le convertir en code exécutable) plus refactoring.
En d'autres termes, écrire la première façon que vous vient, puis revenir sur le code à chercher des occasions pour l'améliorer, consolider le code dupliquée dans des abstractions et des bibliothèques, supprimer le code devenus orphelins, etc. refactoring régulier peut garder une base de code dans une forme qui est facile à entretenir, sans avoir besoin d'une grande abstraction comme le WWF et toutes les complexités qu'ils apportent avec eux.
Je ne sais pas WF est un outil pour ce travail. Ce que je ne vois pas dans votre description du problème est un besoin d'intégration entre les modules et systèmes. C'est là le sweet spot pour l'utilisation de WF est, en essayant de harnais ensemble différents systèmes externes pour attaquer un seul processus (le « workflow / Flow-Chart ») d'une manière organisée et contrôlable, ce qui permet une visibilité sur l'état actuel du processus et être capable de « rester en vie » en attendant les réponses des systèmes externes en mode non-bloquant. Je ne suis pas sûr que ce qui est décrit vaut les frais généraux que WF apporterait.