Branching e unione dei dati aziendali

4

Stiamo lavorando a un progetto in cui gli utenti aziendali operano su un set di dati che viene periodicamente pubblicato. Abbiamo etichettato le pietre miliari della pubblicazione come Versions e, a causa di alcuni vincoli di business, finiamo per duplicare il set di dati per ogni versione che verrà pubblicata.

Durante il ciclo di lavoro, diventa spesso prudente per uno dei gruppi di lavoro estrarre un progetto collaterale (che abbiamo giustamente chiamato Project ), lavorare su quel set di dati per un po 'di tempo, quindi unire le loro modifiche torna alla versione principale, probabilmente aspettando che siano state pubblicate due o più versioni prima che le loro modifiche vengano ripristinate.

Posso vedere le luci che si accendono da qui. "Ah ah!" tu dici "Questa è la stessa cosa che succede in [Git, SVN, TFS, ecc.], la ramificazione e fusione dei codici. Fallo e basta."

Giusto, questo è un perfetto approccio alla mia domanda: come si implementa la ramificazione e la fusione per i dati aziendali che sono distribuiti su sette o più oggetti primari e i loro figli rappresentativi? Capisco chiaramente cosa voglio ottenere, non ho idea di come scrivere le regole in modo che gli sviluppatori possano portarlo avanti e implementarlo con successo (io sono l'architetto della soluzione per il progetto e uno scrittore di codici mediocri). Ho provato a ricercarlo, ma sto trovando solo articoli su cui Git (o Svn o qualsiasi altro) comandi da eseguire per ottenere i risultati desiderati.

A proposito, stiamo sviluppando su .NET 4.5 e implementando Workflow Foundation ed Entity Framework se questo ti aiuta.

Aggiorna

Per la domanda seguente, gli "oggetti primari" sono cose come Model , Option , Version , Rule e Note . Ognuno di questi ha oggetti figlio (un Rule ha un set di Conditions ), unendo oggetti ( RuleVersion ), e naturalmente proprietà ( Option.Description , ecc.). Una delle funzioni principali del sistema consiste nel tenere traccia dei costi e del prezzo al dettaglio, quindi gli oggetti Price e Cost sono appesi ai bordi, ciascuno con il proprio set di proprietà ( Price.Retail , Price.Calculated , ecc.).

    
posta J.D. Ray 12.01.2016 - 20:01
fonte

2 risposte

1

Quello che vuoi fare è chiamato unione a tre vie.

Fondamentalmente, si prende l'originale prima del ramo e il risultato finale dei due rami. Prendi le differenze tra i due rami e l'originale e unisci quelle differenze insieme.

Come si fondono i diff? Questa è la parte difficile, ma qui ci sono diversi progetti che implementano l'algoritmo per oggetti javascript arbitrari:

  1. link
  2. link
  3. link

Potresti scoprire di aver bisogno di elaborare le tue regole aziendali specifiche su come unire. Ma penso che vorrai seguire lo stesso schema di base di un'unione a tre.

    
risposta data 15.01.2016 - 18:20
fonte
0

I miei pensieri:

  • Dovresti implementare gli oggetti writeTo / readFrom in un formato di testo leggibile come csv, xml, json. vantaggi
    • Può essere gestito tramite texteditor
    • Supporto per la ricerca testuale e sostituzione
  • Se disponi di elenchi (incorporati) di (sotto) oggetti, fai in modo che siano sempre nello stesso ordine (cioè ordinati per nome). vantaggi
    • Windiff mostrerà solo le modifiche rilevanti.
  • invece di importare / esportare chiavi di database autogenerate utilizzare chiavi simboliche poiché la chiave del database può varay da sistema a sistema.

Utilizziamo i file CSV con questi vincoli per mantenere i nostri testdata tramite git per i test di integrazione automatici. i file CSV possono essere facilmente modificati tramite libre office. Microsoft Excel come editor csv è problematico perché interpreta le colonne come date, numeri, ... che possono rovinare il contenuto quando si scrive di nuovo in csv.

    
risposta data 13.01.2016 - 11:39
fonte

Leggi altre domande sui tag