History for PartConfiguration

changed:
-
Part Confuguration contains:

 * Part description

 * Terminals (Pins)



Part description

  Part description contains name of the part, reference to the implematations code (classname), sourcename (the name of the current file), and type

::  
 
 <!ELEMENT part (terminals)>
 <!ATTLIST part
    name CDATA #IMPLIED                 - display name of part
    classname CDATA #IMPLIED 		- class name that 'atomic' part points 
    sourcename CDATA #IMPLIED		- not used reserved for future use
 >


Example::

 <part  name="HelloWorld"  classname="org.vcb.parts.sample.HelloWorld">

Pins

 Part configuration contains inpin, outpins and inoutpin desciption

::

 <!ELEMENT terminals (outpin|inpin|inoutpin)*>

Inpins contains pin description and parameters::

 <!ELEMENT inpin (parameter)*>
 <!ATTLIST inpin
    id CDATA #REQUIRED			- unique id in the scope of part (range from 1 - 50)
    name CDATA #IMPLIED   		- display name of pin
    method-name CDATA #REQUIRED		- refer to Java method
    run-as-default CDATA #IMPLIED	- if set 'true' then pin will be fired at part start up (instantiation time) with declared values
  >

Example::

 <inpin id="1" name="hello" method-name="sayHello" >
     <parameter type="java.lang.String" name="name" default-value="Buildap" />
 </inpin>

Similarly outpins:: 

 <!ELEMENT outpin (parameter)*>
 <!ATTLIST outpin
    name CDATA #REQUIRED		- display name of pin
    id CDATA #REQUIRED			- unique id in the scope of part (range from 51 - 99)
 >

Example::

 <outpin id="51" name="GREETING" >
      <parameter type="java.lang.String" name="message" />
 </outpin>

When the same method is used both of inpin and outpin (via return) then inoutpins are used. Inout pins have two ids - one for inpin and one for outpin, and also contain the return type and outpin name. Graphically inout tag will be shown as two separate in and out pins. 

::

 <!ELEMENT inoutpin (parameter|result)*>
 <!ATTLIST inoutpin
    name CDATA #IMPLIED			- display name for inpin
    method-name CDATA #IMPLIED		- points to Java method
    id CDATA #REQUIRED			- unique id in the scope of part (range from 1 - 50) serve as inpin id
    out-id CDATA #REQUIRED		- unique id in the scope of part (range from 51 - 99) serve as outpin id
    out-name CDATA #IMPLIED		- display name for outpin
  >

 <!ELEMENT result EMPTY>
 <!ATTLIST result
    type CDATA #REQUIRED		- fully qualified Java type
    name CDATA #IMPLIED			- display name for result as parameter is provided
    array CDATA #IMPLIED		- if set 'true' type will be processed as array
  >

Example::

 <inoutpin id="2" name="hello2" method-name="sayHello2" out-id="51" out-name="GREETING" >
      <parameter type="java.lang.String" name="name" />
      
      <result type="java.lang.String" />
 </inoutpin>


Parameters::

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT parameter EMPTY>
 <!ATTLIST parameter
    type CDATA #REQUIRED
    name CDATA #IMPLIED
    array CDATA #IMPLIED
    default-value CDATA #IMPLIED    default value will be used if no other provided 
  >

Example::
 
 <parameter type="int" name="pogos" array="false" default-value="1000"  />


Array type can be used in parameters for pins - in configuration files

::


 <parameter type="String" name="param0" array="true" />


In test files arrays can be build for testing 

::

 <parameter type="String" array="true" >
	<parameter type="String" >OpenAction</parameter>
        <parameter type="String" > OpenLocationAction </parameter>
 </parameter>

 <parameter type="String" array="true" >
	<parameter type="String" array="true" >
		<parameter type="String">   	OpenAction    	</parameter>
        	<parameter type="String">   OpenLocationAction 	</parameter>
	</parameter>
        <parameter type="String" array="true" >
		<parameter type="String">   	OpenAction	</parameter>
        	<parameter type="String">   OpenLocationAction	</parameter>
	</parameter>
 </parameter>

Empty tag denotes empty value for example 

::

 <parameter type="java.lang.String" ></parameter>


Mean empty string. In case if null paramter is needed then spesial tag should be used

::

 <parameter type="java.lang.String" ><null/></parameter>


Default values usage.
In case if parameters provided partially then (if present) default values are used. If inpin declaration has run-as-default="true" then defalut value will be fired at start up time also.

::

 <inpin id="1" name="hello" method-name="sayHello" run-as-default="true" >
     <parameter type="java.lang.String" name="name" default-value="Buildap" />
 </inpin>



PartConfigurationExample

PartImplementationExample (Java code)

Part DTD

 Part configuration has the following dtd

::

 <?xml version='1.0' encoding='UTF-8'?>

 <!--
    Typical usage:

    <?xml version="1.0"?>

    <!DOCTYPE part SYSTEM "part.dtd">

    <part>
    ...
    </part>
 -->

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT part (terminals)>
 <!ATTLIST part
    name CDATA #IMPLIED
    classname CDATA #REQUIRED
    sourcename CDATA #IMPLIED
 >

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT terminals (outpin|inpin|inoutpin)*>

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT inpin (parameter)*>
 <!ATTLIST inpin
    id CDATA #REQUIRED
    name CDATA #IMPLIED
    method-name CDATA #REQUIRED
    run-as-default CDATA #IMPLIED
  >

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT outpin (parameter)*>
 <!ATTLIST outpin
    name CDATA #REQUIRED
    id CDATA #REQUIRED
 >

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT inoutpin (result, (parameter)*)>
 <!ATTLIST inoutpin
    name CDATA #IMPLIED
    method-name CDATA #IMPLIED
    id CDATA #REQUIRED
    out-id CDATA #REQUIRED
    out-name CDATA #IMPLIED
  >

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT result (parameter)*>
 <!ATTLIST result
    type CDATA #REQUIRED
    name CDATA #IMPLIED
    array CDATA #IMPLIED
  >

 <!--- Put your DTDDoc comment here. -->
 <!ELEMENT parameter (parameter)*>
 <!ATTLIST parameter
    type CDATA #REQUIRED
    name CDATA #IMPLIED
    array CDATA #IMPLIED
  >