<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://frp.sage.fr/wiki1000/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://frp.sage.fr/wiki1000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cesru</id>
		<title>Wiki1000 - Contributions de l'utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://frp.sage.fr/wiki1000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cesru"/>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Sp%C3%A9cial:Contributions/Cesru"/>
		<updated>2026-04-25T23:49:14Z</updated>
		<subtitle>Contributions de l'utilisateur</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Travailler_sur_une_branche_git</id>
		<title>Travailler sur une branche git</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Travailler_sur_une_branche_git"/>
				<updated>2020-07-01T08:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;Cesru : Correction mot manquant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Principe==&lt;br /&gt;
&lt;br /&gt;
Il s'agit de créer une branche, de développer sur cette branche et de pousser les modifications dans BitBucket pour partager cette branche avec l'équipe.&lt;br /&gt;
&lt;br /&gt;
==Mise en oeuvre==&lt;br /&gt;
&lt;br /&gt;
===Création de branche dans le concepteur===&lt;br /&gt;
====Dans le concepteur de modèle ajouter un nouvelle branche====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add new branch&amp;quot;=crée une branche ; &amp;quot;Checkout new branch&amp;quot;=crée une branche et se positionne dessus)&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch0.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Choisir le type de branche et la nommer====&lt;br /&gt;
&lt;br /&gt;
{{tip|Le type de branche influe sur les pulls requests}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La branche apparaît dans les branches locales&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch30.png]]&lt;br /&gt;
&lt;br /&gt;
La branche courante apparaît dans le titre de l'onglet Git&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch50.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Obtenir une branche distante===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si on souhaite travailler sur une branche qu'on a pas créée (crée dans JIRA ou créée par un autre membre de l'équipe dans le concepteur), il faut faire un refresh des branches distantes pour la voir apparaître et faire un checkout pour se positionner dessus.&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch14.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch15.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Voir les modifications effectuées===&lt;br /&gt;
&lt;br /&gt;
Pour voir les modification de source dans Git, penser à enregistrer les modifications&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir les modifications apportées&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Commiter son travail===&lt;br /&gt;
&lt;br /&gt;
Ajouter les fichiers modifiés dans l'index &lt;br /&gt;
&lt;br /&gt;
[[image:git_branch7.png]]&lt;br /&gt;
&lt;br /&gt;
Les fichiers apparaissent dans l'index&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch8.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
effectuer un commit&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch10.png]]&lt;br /&gt;
&lt;br /&gt;
Le commit apparaît sur la branche&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch9.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Pousser sa branche sur le répertoire distant===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch11.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch12.png]]&lt;br /&gt;
&lt;br /&gt;
La branche est visible dans BitBucket, les autres membres de l'équipe peuvent travailler dessus en faisaint un &amp;quot;pull&amp;quot; dans le concepteur de modèle et en faisant un &amp;quot;checkout&amp;quot; sur cette branche&lt;br /&gt;
&lt;br /&gt;
[[image:git_branch13.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Développement]]&lt;br /&gt;
[[Category:Version910]]&lt;/div&gt;</summary>
		<author><name>Cesru</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Parameters_(type)</id>
		<title>Parameters (type)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Parameters_(type)"/>
				<updated>2019-09-30T08:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;Cesru : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le type de données « Paramètres » permet de stocker dynamiquement des [[Parameter (type)|paramètres]] qui ne sont pas connu à l'avance.&lt;br /&gt;
&lt;br /&gt;
Le type paramètres est stocké sous forme de document XML&lt;br /&gt;
&lt;br /&gt;
Le type [[Parameter (type)|paramètre]] peut être utilisé pour stocker des couple clé/valeur.&lt;br /&gt;
&lt;br /&gt;
===Propriétés===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Count (parameters type)|Count]]&lt;br /&gt;
|Retourne le nombre de paramètre&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Clear (parameters type)|Clear]]&lt;br /&gt;
|Vide la liste des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|[[Names (parameters type)|Names]]&lt;br /&gt;
|Accède au nom des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|[[Values (parameters type)|Values]]&lt;br /&gt;
|Accède au valeur des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|[[ValueByIndex (parameters type)|ValueByIndex]]&lt;br /&gt;
|Accède au valeur des paramètres par leur index&lt;br /&gt;
|-&lt;br /&gt;
|[[NameExists (parameters type)|NameExists]]&lt;br /&gt;
|Test si un paramètre existe.&lt;br /&gt;
|-&lt;br /&gt;
|[[IndexOfName (parameters type)|IndexOfName]]&lt;br /&gt;
|Retourne l'index d'un paramètre&lt;br /&gt;
|-&lt;br /&gt;
|[[Add (parameters type)|Add]]&lt;br /&gt;
|Ajoute un paramètre&lt;br /&gt;
|-&lt;br /&gt;
|[[Find (parameters type)|Find]]&lt;br /&gt;
|Retourne un paramètre par son nom&lt;br /&gt;
|-&lt;br /&gt;
|[[Remove (parameters type)|Remove]]&lt;br /&gt;
|Supprime un paramètre&lt;br /&gt;
|-&lt;br /&gt;
|[[Merge (parameters type)|Merge]]&lt;br /&gt;
|Fusionne une liste de paramètre&lt;br /&gt;
|-&lt;br /&gt;
|[[Replace (parameters type)|Replace]]&lt;br /&gt;
|Remplace les valeurs par une liste de paramètre&lt;br /&gt;
|-&lt;br /&gt;
|[[Items (parameters type)|Items]]&lt;br /&gt;
|Retourne un paramètre par son index&lt;br /&gt;
|-&lt;br /&gt;
|[[LogEvent (parameters type)|LogEvent]]&lt;br /&gt;
|Transmet le contenu comme évènement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
unit TestSYFREWF;&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
Type&lt;br /&gt;
  Facade1 = Class(TitObject)&lt;br /&gt;
  public&lt;br /&gt;
    keyvalue: TFrameWorkDataType;&lt;br /&gt;
    Procedure AddKeyValue;&lt;br /&gt;
    Class Procedure TestFacade1;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Implementation&lt;br /&gt;
&lt;br /&gt;
{Facade1}&lt;br /&gt;
&lt;br /&gt;
Procedure Facade1.AddKeyValue;&lt;br /&gt;
//Procedure AddKeyValue;&lt;br /&gt;
begin&lt;br /&gt;
  keyvalue.Add('source','key1',100);&lt;br /&gt;
  //&lt;br /&gt;
  if keyvalue.Find('source','key1').Value=100&lt;br /&gt;
     then showMessage('OK')&lt;br /&gt;
     else showMessage('failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.Names[0]='key1'&lt;br /&gt;
     then showMessage('Names ok')&lt;br /&gt;
     else showMessage('Names failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.Values['key1']=100&lt;br /&gt;
     then showMessage('Values ok')&lt;br /&gt;
     else showMessage('Values failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.ValueByIndex[0]=100&lt;br /&gt;
     then showMessage('ValueByIndex ok')&lt;br /&gt;
     else showMessage('ValueByIndex failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.NameExists('key1')&lt;br /&gt;
     then showMessage('NameExists ok')&lt;br /&gt;
     else showMessage('NameExists failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.IndexOfName('key1')&amp;lt;&amp;gt;-1&lt;br /&gt;
     then showMessage('IndexOfName ok')&lt;br /&gt;
     else showMessage('IndexOfName failed');&lt;br /&gt;
&lt;br /&gt;
  if keyvalue.Items[keyvalue.IndexOfName('key1')].Value=100&lt;br /&gt;
     then showMessage('Items ok')&lt;br /&gt;
     else showMessage('Items failed');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Class Procedure Facade1.TestFacade1;&lt;br /&gt;
//Class Procedure TestFacade1;&lt;br /&gt;
begin&lt;br /&gt;
  showMessage('Test Facade1');&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[Parameter (type)|Type paramètre]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Type de donnée Paramètres]]&lt;br /&gt;
[[category:Types]]&lt;br /&gt;
[[Category:Version700]]&lt;/div&gt;</summary>
		<author><name>Cesru</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/TSelectorConstraint_(selector)</id>
		<title>TSelectorConstraint (selector)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/TSelectorConstraint_(selector)"/>
				<updated>2016-11-17T15:08:27Z</updated>
		
		<summary type="html">&lt;p&gt;Cesru : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{latest}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;TSelectorConstraint:TObject;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cet objet matérialise une contrainte posée sur un sélecteur.&lt;br /&gt;
&lt;br /&gt;
Une contrainte permet de définir une jointure et de poser des conditions sur cette jointure.&lt;br /&gt;
&lt;br /&gt;
===Attributs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[Nom (TSelectorConstraint)|Nom]]&lt;br /&gt;
|Nom de la contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[Parent (TSelectorConstraint)|Parent]]&lt;br /&gt;
|Objet parent de la contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[ClassName (TSelectorConstraint)|ClassName]]&lt;br /&gt;
|Nom de la classe sur laquelle porte la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[Left (TSelectorConstraint)|Left]]&lt;br /&gt;
|Nom de l'attribut gauche&lt;br /&gt;
|-&lt;br /&gt;
|[[Right (TSelectorConstraint)|Right]]&lt;br /&gt;
|Nom de l'attribut droit&lt;br /&gt;
|-&lt;br /&gt;
|[[Where (TSelectorConstraint)|Where]]&lt;br /&gt;
|Clause Where de la contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[ArgCount (TSelectorConstraint)|ArgCount]]&lt;br /&gt;
|Nombre d'arguments de la clause where&lt;br /&gt;
|-&lt;br /&gt;
|[[Args (TSelectorConstraint)|Args[]]]&lt;br /&gt;
|Argument de la clause where&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes d'instance===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[AliasOf (TSelectorConstraint)|AliasOf]]&lt;br /&gt;
|Retourne la colonne préfixée d'un attribut de la classe de la contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[Delete (TSelectorConstraint)|Delete]]&lt;br /&gt;
|Supprime la contrainte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Exemples d'utilisation de contrainte===&lt;br /&gt;
&lt;br /&gt;
[[image:selector_constraint_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Contrainte venant d'une référence'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selA:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]);&lt;br /&gt;
  obj  := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]);&lt;br /&gt;
  Result := selA.Count;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Contrainte venant d'une référence inversée'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selB:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]);&lt;br /&gt;
  obj  := selB.AddConstraint(nil, 'ClassA','refB','oid','unCodeA=%1',[iCodeA]);&lt;br /&gt;
  Result := selB.Count;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Contrainte en cascade'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selA:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]);&lt;br /&gt;
  obj  := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]);&lt;br /&gt;
  obj  := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA',[]);&lt;br /&gt;
  Result := selA.Count;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Contrainte entre classes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selB:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selB := ClassB.CreateSelector('unCodeB=%1','unCodeB',True,[iCodeB]);&lt;br /&gt;
  obj  := selB.AddConstraint(nil, 'ClassA','refB','oid','',[]);&lt;br /&gt;
  obj  := selB.AddConstraint(nil, 'ClassA2','refB','oid','(AliasOf(''ClassA'',''unCodeA'')=unCodeA2) and (unCodeA2=%1)',[iCodeA]);&lt;br /&gt;
  Result := selB.Count;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selA:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]);&lt;br /&gt;
  obj  := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]);&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     Result := selA.Update(['unEntierA'],[0]);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour en utilisant un attribut de la contrainte'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function doSelector(const iCodeA:string; const iCodeB:string):Integer;&lt;br /&gt;
var selA:TSelector; obj:TSelectorConstraint;&lt;br /&gt;
begin&lt;br /&gt;
  selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]);&lt;br /&gt;
  obj  := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); // obj.Name='C1'&lt;br /&gt;
  obj  := selA.AddConstraint(obj, 'ClassA2','refB','oid','AliasOf(''ClassA'',''unCodeA'')=unCodeA2',[]); // obj.Name='C2'&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     Result :=  selA.Update(['unEntierA'],['C2.unEntierA2']);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[AddConstraint (selector)|Ajouter une contrainte]]&lt;br /&gt;
* [[AliasOf (exp)|AliasOf]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Selecteur (tech)}}&lt;br /&gt;
[[category:Sélecteur]]&lt;/div&gt;</summary>
		<author><name>Cesru</name></author>	</entry>

	</feed>