Comment dois-je écrire SCHEMA comme code? Ou devrais-je utiliser quelque chose comme Windows Workflow Foundation?

StackOverflow https://stackoverflow.com/questions/4738673

  •  12-10-2019
  •  | 
  •  

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)

text alt

.. 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
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top