<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Sample Changes Report: Papyrus SysML 1.4</title>
  </properties>
  <body>
  	<release version="0.10.1" date="2017-05-18" description="Updates on Palette, Properties, Validation">
      <action dev="bmaggi" type="add" issue="508532">
      A property view shouldn't be empty 
      </action> 
       <action dev="bmaggi" type="add" issue="509148">
	  Allocation table should display supplier in one column 
      </action>      
       <action dev="nfauvergue" type="add" issue="510521">
       [Parametric] Allow constraint Block drop
      </action>
       <action dev="bmaggi" type="add" issue="508172">
       [IBD] Refresh problems when resizing a FlowPort
      </action>          
     <action dev="bmaggi" type="add" issue="510848">
	 [Validation] Correct rule 8.3.2.3 Block [8] Any classifier that specializes a Block must also have the
 Block stereotype or one of its specializations applied
     </action>      
      <action dev="bmaggi" type="add" issue="516343">
      [Validation] Correct rule 9.3.2.5  FeatureDirection [1] A FlowProperty is typed by a ValueType, Block, or Signal.
      </action>
      <action dev="bmaggi" type="add" issue="515283">
      [Validation] Correct rule 8.3.2.7 DirectedRelationshipPropertyPath [6] The type of the property at the
  last position of the sourcePropertyPath list must own or inherit the source
  of the stereotyped directed relationship.
      </action>
     <action dev="bmaggi" type="add" issue="514255">
	[Validation] Error when creating a part 
     </action>       
      <action dev="bmaggi" type="add" issue="511914">
     [Validation] Missing rules for allocation (source and target multiplicity == 1)
      </action> 
      <action dev="bmaggi" type="add" issue="516561">
      DeriveReqt should be allowed only requirements
      </action>
      <action dev="bmaggi" type="add" issue="514301">
      [Palette] Remove Continuous, Rate and Discrete from
      </action>      
      <action dev="bmaggi" type="add" issue="514305">
      [Palette] Regroup Test Case element in Stack 
      </action>            
      <action dev="bmaggi" type="add" issue="514065">
      [Palette] [Parametric] Manage FlowPort as Deprecated
      </action>
      <action dev="nfauvergue" type="add" issue="513817">
      [Palette] [IBD] Manage FlowPort as Deprecated
      </action>           
    </release>    
  	<release version="0.10.0" date="2016-09-30" description="0.10.0">
  	  <action dev="bmaggi" type="update" issue="501077">
		Performance: change Package to Profile in the SysML 1.4 OMG profile
		:warning: The profile needs to be re-apply:
				- Open your Model
				- Select the root in the Model Explorer
				- Select Profile Properties view
				- SysML 1.4 profile is applied
				- Re-apply SysML 1.4 profile
				=> All SysML 1.4 sub profile should also be applied
      </action>  	  
      <action dev="bmaggi" type="add">
		Many constraints have added from the official norm.
		You can validate your model by:
		       - Opening the model in model explorer
		       - Right click on any element
		       - Chose Validation > Validate Model
		       - The result of the validation is available in  
      </action>
      <action dev="bmaggi" type="add" issue="478268">
		Add Association Block element, an AssociationBlock is an association class stereotyped by Block  
      </action>       
  	  <action type="update">
        All the fixes can be found here: https:&#47;&#47;bugs.eclipse.org&#47;bugs&#47;buglist.cgi&#63;classification&#61;Modeling&#38;product&#61;Papyrus&#38;component&#61;SysML&#38;target_milestone&#61;0.10.0
      </action>  
    </release>  
  	<release version="0.9.1" date="2016-07-30" description="0.9.1">
  	  <action dev="bmaggi" type="update" issue="498991">
		Performance: improve element creation in diagrams
      </action>
      <action dev="bmaggi" type="update" issue="498989">
		Performance: improve element creation in diagrams
      </action>
      <action dev="bmaggi" type="update" issue="498885">
		Performance: improve element creation in diagrams
      </action>
      <action dev="bmaggi" type="update" issue="498338">
		Performance: improve element creation in diagrams
      </action>
      <action dev="flefevre" type="add" issue="496803">
		Releng: introducing the Components parent pom to manage the shared configuration accross all Papyrus components
      </action>
      <action dev="bmaggi" type="update" issue="495408">
		Add a new type of table : Requirement Tree Table
      </action>
      <action dev="bmaggi" type="update">
		Add a new plugin to hold all the viewpoint configuration
      </action>     	  
      <action type="update">
        All the fixes can be found here: https:&#47;&#47;bugs.eclipse.org&#47;bugs&#47;buglist.cgi&#63;classification&#61;Modeling&#38;product&#61;Papyrus&#38;component&#61;SysML&#38;target_milestone&#61;0.9.1
      </action>       
    </release>  
  	<release version="0.9.0" date="2016-05-30" description="Wild Cat release">
      <action dev="bmaggi" type="update">
		This version is only compatible with Papyrus Eclipse Neon.
      </action>
      <action type="update">
		This version will allow to create "Inner Port", port on port in IBD and Parametric Diagram.
      </action>
      <action type="update">
		This version add all the validation rules for the requirements.
      </action>            	
      <action type="update">
        All the fixes can be found here: https:&#47;&#47;bugs.eclipse.org&#47;bugs&#47;buglist.cgi&#63;classification&#61;Modeling&#38;product&#61;Papyrus&#38;component&#61;SysML&#38;target_milestone&#61;0.9.0
      </action>       
    </release>
    <release version="0.8.1" date="2016-15-04" description="Second release">
      <action dev="bmaggi" type="update" issue="488468">
		Update version dependencies to indicate incompatibility with Papyrus Neon 
		(Note version 0.9.0 won't be compatible with Papyrus Mars)
      </action>	 
	  <action dev="flefevre" type="update" issue="479570">
       755c771 Bug 484695 - [SysML 1.4][product] open the papyrus perspective
      </action>
      <action dev="flefevre" type="update" issue="479570">
       3958147 Bug 478259 - [SysML 1.4][BDD] Attributes compartment of ConstraintBlocks should be named 'parameters'
      </action>
      <action dev="flefevre" type="add" issue="480739">
		New icon for ControlOperator in the model explorer view
      </action>		
      <action dev="bmaggi" type="update" issue="488080">
		The new Child menu is separated in two menus nodes and relations
      </action>	
      <action dev="bmaggi" type="add" issue="484221">
	  The rcptt tests are know available here: https:&#47;&#47;repo.eclipse.org&#47;content&#47;repositories&#47;papyrus-releases&#47;org&#47;eclipse&#47;papyrus&#47;sysml&#47;org.eclipse.papyrus.sysml14.rcptt.tests&#47;
      </action>	  
      <action type="update">
        All the fixes can be found here: https:&#47;&#47;bugs.eclipse.org&#47;bugs&#47;buglist.cgi&#63;classification&#61;Modeling&#38;product&#61;Papyrus&#38;component&#61;SysML&#38;target_milestone&#61;0.8.1
      </action>
    </release>	
    <release version="0.8" date="2015-12-01" description="First release">
      <action dev="flefevre" type="fix" issue="479570">
        Factorize the code under org.eclipse.papyrus.sysml14.diagram.blockdefinition.factory.
      </action>
      <action dev="bmaggi" type="update">
        Uploaded documentation and first major commit.
      </action>
    </release>
  </body>
</document>