Bonjour à tous,
Actuellement en stage suite à une formation de développeur logiciel que j'ai suivi au centre AFPA de ma commune, j'ai une difficulté liée à la base de données sur laquelle je travaille actuellement.
Contexte du projet :
Je travaille pour une grande entreprise qui propose à ses équipes en succursale d'utiliser une tablette tactile avec des modèles prédéfinies de prise d'informations via des formulaires.
La personne en charge de mettre en forme ces modèles utilise un logiciel d'un prestataire (non développé chez nous) qui consiste à faire du "drag & drop" de boutons et autres menu déroulants sur une "page" prévue à cet effet.
Lorsque le technicien en charge de celà décide de faire des modifications sur un modèle existant ou déjà crée, celà peut engendrer des modifications sur plusieurs formulaires non souhaités, et, lors de la mise en prod, les équipes en succursale trouvent des bugs lors de l'utilisation de leur tablette (bouton associé à rien du tout, formulaire inutile sur un modèle en particulier...).
BUT :
C'est là ou j'interviens.
On m'a demandé de concevoir une application web permettant de lister les modèles sur lesquels il y a eu des modifications, mais aussi les formulaires impactés par la modification.
Ainsi, le technicien choisira le ou les formulaires sur lesquels il souhaite que la modification se fasse ou non avant mise en production.
DIFFICULTES TECHNIQUES :
Ces modèles et formulaires sont enregistrés dans une base de données comprenant les champs suivants : Id, Name, Content. (table Template et table Form).
Le champs Content prend des informations directement en XML. Voici à quoi ressemble l'information enregistrée en base de données :
1 2
|
<Root><StorageObject Name="OI-GENOUILLERE ODRA-v2" Id="0108f7ac-7853-4543-8ec4-a04cb755ed46" Type="Adviser.Proteor.Library.TemplateImpl"><Properties><Property Name="TimeCreated" Value="27/07/2017 11:14:18" /><Property Name="Enabled" Value="True" /><Property Name="TimePublished" Value="01/01/0001 00:00:00" /><Property Name="TimeLastModified" Value="10/11/2017 09:09:29" /><Property Name="Description" Value="" /><Property Name="ObjectContent" Value="<Template><Component Type="Adviser.Proteor.Library.TemplateImpl"><ExtendedProperty Text="OI" Key="Classification" /><ExtendedProperty Text="35176af2-b664-42d6-a7ba-5d06602b0500" Key="ClassificationId" /><ExtendedProperty Text="GAO" Key="Activity" /><ExtendedProperty Text="58d942ea-8cf7-4089-879c-f8633925473b" Key="ActivityId" /><ExtendedProperty Text="OI 36" Key="AnatomicalLevel" /><ExtendedProperty Text="76418da5-6830-4a49-aed0-b472c11c67c6" Key="AnatomicalLevelId" /><ExtendedProperty Text="ORTHESE INF." Key="Type" /><ExtendedProperty Text="13b33a27-57ce-4009-8812-00f8578982fd" Key="TypeId" /><Version Version.Major="0" Version.Minor="1" /><Properties><Property Name="TimeCreated" Value="27/07/2017 11:14:18" /><Property Name="Enabled" Value="True" /><Property Name="TimePublished" Value="01/01/0001 00:00:00" /><Property Name="TimeLastModified" Value="10/11/2017 09:09:29" /><Property Name="Description" Value="" /></Properties><Component Type="Adviser.Proteor.Library.StepImpl"><Properties><Property Name="FormId" Value="d442dce3-fc1f-49da-92c5-b25d89d76881" /><Property Name="ValidationMode" Value="None" /></Properties><Component Type="Adviser.Proteor.Library.Impl.Action.Task.OnPageLoadTrigger"><Properties><Property Name="PageNumber" Value="1" /></Properties><Component Type="Adviser.Proteor.Library.Impl.Action.Task.SetControlValueTask"><Properties><Property Name="Text" Value="{agence}" /><Property Name="ObjectId" Value="dc20a4e2-46d6-47fe-8c75-bf4d7ff012ba" /></Properties></Component><Component Type="Adviser.Proteor.Library.Impl.Action.Task.SetControlValueTask"><Properties><Property Name="Text" Value="{win_utilisateur}" /><Property Name="ObjectId" |
Je ne vous ai pas tout mis, car la donnée est énorme.
J'ai vu qu'il était possible de faire des requêtes SQL sur ce genre de données, mais je suis perdu... En fouillant dans le code, j'ai trouvé un élément qui est, après investigation, très important pour la suite de mon projet :
FormId" Value="d442dce3-fc1f-49da-92c5-b25d89d76881"
La valeur qui correspond est bien l'Id de la table Form correspondante.
Mais sans la requête pointant directement sur cet (ces) élement(s) dans le champs Content, je ne pourrai pas afficher ces informations dans mon application web.
Technologiquement, j'ai fait le choix de travailler en ASP.Net sur Visual Studio et d'utiliser Sql Server Management Studio (l'entreprise ou je travaille est sur Sql Server).
Mon GridView est prêt avec le SqlCommand qu'il faut mais le principal est encore à faire...
J'ai besoin d'être orienté, car je vois beaucoup de chose, mais je suis perdu :
- Dois-je sortir toute la donnée sur un fichier xml à part ?
- puis-je travailler directement sur cette donnée là ?
- J'ai vu beaucoup de chose sur le net qui demandait à avoir le namespace. Or, je ne vois rien dans le code qui le précise.
Bonne journée.
Cdt,
Senjin
Partager