Tarification basée sur une formule. Stockage dans le SGBDR et utilisation dans la couche application

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

Question

Je suis sur le point d'entrer dans les premières phases de la conception d'une application de négoce de matières premières. Une fonction majeure de cette application est la capture et l’évaluation des informations de tarification. Les prix sur ce marché ne sont pas fixes. Il s’agit généralement d’un repère du marché +/- une prime. Par exemple: (A et B sont des points de repère du marché)

  • Prix = A + 1 $
  • Prix = A + .5 (A-B)

Le prix final de la transaction est calculé à l'aide de la formule de tarification appliquée sur une période convenue. Par exemple; Le prix final pourrait être la moyenne de A + 1 USD la semaine précédente et la semaine suivant le chargement du produit.

Actuellement, les traders saisissent ce détail dans Excel, ce qui leur donne la souplesse nécessaire pour configurer les formules requises, mais ces informations ne sont jamais intégrées à nos systèmes comptables et les feuilles de calcul ne sont pas liées aux prévisions en temps réel des indices de référence du marché permettant la prévision des prix. une tâche manuelle et lente.

Je souhaite connaître les outils / techniques que je peux utiliser pour saisir, stocker et évaluer des formules dans une application.

Nous utiliserons SQL Server ou Oracle comme base de données et la plate-forme cliente n'est pas encore fixée, mais vous pouvez supposer que WinForms / WPF, ASP.NET ou une application Web Java.

Je sais que la question est assez vaste, mais nous ne sommes pas assez avancés pour être plus précis quant aux technologies qui seront utilisées.

Merci

Était-ce utile?

La solution

Je parie que vos utilisateurs apprécient la flexibilité de la saisie des formules dans Excel. Je suggère donc une approche comme celle-ci: -

  1. Ecrivez quelque chose pour leur permettre de saisir des formules dans votre application en utilisant le type d'opérateurs qu'ils utiliseront réellement avec des mots clés pour les différents prix de base. Cela peut simplement être stocké sous forme de chaîne.
  2. Validez-le en utilisant une approche de liste blanche (cela pourrait être assez compliqué, vous aurez peut-être besoin de chercher des algorithmes d'analyse basés sur des piles). Vous pouvez autoriser: + - / * () {constantes numériques} {mots clés pour prix de base}.
  3. Traduisez ces formules en quelque chose que votre base de données peut comprendre dans la liste SELECT. Si les formules qu’ils entrent sont similaires à ce que vous pouvez faire en SQL, cela n’est peut-être pas trop difficile. Les mots-clés sont transformés en noms de colonnes et tout le reste peut être laissé seul.

Ensuite, vous pourrez SÉLECTIONNER les données, établir une moyenne sur les périodes, etc. en branchant le formulaire spécial et en l'exécutant sur vos données historiques et / ou vos prévisions.

L'étape 2 comporte quelques astuces, mais rendrait tout le reste facile (et efficace).

Autres conseils

Avez-vous envisagé d’intégrer Excel? De cette manière, vous n’avez pas à essayer d’extraire Excel de ses griffes (utilisateurs professionnels ADORE Excel) et à utiliser toutes les astuces qu’ils ont apprises au fil des ans. Vous ne faites que pomper les données entre votre application et Excel à l'aide de VBA (ou comme ils disent aux gens de s'intégrer à Excel ces jours-ci) et vous êtes quasiment prêt à partir.

J'ai une solution ridiculement simple liée à la proposition de Hank. Créez une base de données et modélisez-la d'après vos tableaux Excel. Exportez les données Excel et importez-les dans votre base de données. Créez des connecteurs ODBC sur les ordinateurs clients pour qu'ils pointent vers la base de données. Dans Excel, vous pouvez vous connecter aux sources de données. De cette façon, vos clients n'auront aucun problème avec les modifications de l'interface utilisateur.

Scénario intéressant. AVERTISSEMENT: cette réponse est basée sur certaines idées que j'avais pour aborder le problème et peut ne pas refléter les meilleures pratiques.

J'essaierais de voir si vous pouvez résumer vos règles de formule potentielles en constructions plus simples. Cela vous permettrait ensuite de composer vos règles ensemble pour créer des formules complexes. Vous devez ensuite pouvoir stocker les règles dans la base de données, ce qui peut être fait à l'aide d'un fichier DSL ou XML.

Il semble que votre scénario actuel, la formule en Excel, fonctionne assez bien, mais présente quelques ratés. Avez-vous envisagé d'utiliser des macros avancées ou une automatisation Excel? Vous pouvez probablement atteindre la plupart de vos objectifs sans que vos clients aient à quitter Excel.

Bonne chance.

Si les données proviennent d'une source approuvée (grande si), vous pouvez stocker les expressions de base de données dans une colonne, puis créer une instruction SELECT à la volée pour l'exécuter.

Vous pouvez utiliser un package mathématique symbolique tel que GiNaC pour interpréter les formules que vous entrez dans le tables.

Merci pour les réponses.

Les utilisateurs eux-mêmes veulent s’éloigner d’Excel. Ils luttent avec plusieurs utilisateurs essayant d'entrer et de mettre à jour des données. Je pourrais étudier quelles options VSTO offre pour incorporer de petites feuilles Excel dans des applications.

Je suis enclin à utiliser un "langage" intégré pour stocker et évaluer les formules.

Utiliser un simple analyseur syntaxique pour convertir les formules saisies en SQL est probablement une idée raisonnable, car les variables dans les équations sont des vecteurs de séries chronologiques et non des points de données scalaires et l’approche SQL devrait faciliter le calcul des résultats sur les périodes requises.

Merci

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