Anna, Alvar, Urmas: Difference between revisions
No edit summary |
|||
(17 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
=Rühma liikmed:= | |||
Anna | Anna Lütsepp | ||
Alvar Väinola | Alvar Väinola | ||
Urmas Pill | Urmas Pill | ||
==XML | =XML= | ||
TeamFoundation projekt (urmas.visualstudio.com): | |||
[https://urmas.visualstudio.com/DefaultCollection/XML%20for%20IT%20College] | |||
==Faili kirjeldus== | |||
Võtsin xml tekitamise aluseks ühe majandustarkvarast pakutava demoandmetega kaupade tabeli. Sealt sai võetud mõned "huvitavamad" andmed ning lisatud ka setud tabelist kaupadega seotud dimensioonide vaikeväärtused. Tulemuseks on xml fail, mille nimeks on meie TeamFoundationi projektis Example1.xml | Võtsin xml tekitamise aluseks ühe majandustarkvarast pakutava demoandmetega kaupade tabeli. Sealt sai võetud mõned "huvitavamad" andmed ning lisatud ka setud tabelist kaupadega seotud dimensioonide vaikeväärtused. Tulemuseks on xml fail, mille nimeks on meie TeamFoundationi projektis Example1.xml | ||
Line 18: | Line 23: | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
<ItemList> | <ItemList> | ||
<TableID>27</TableID> | |||
<PageID>31</PageID> | |||
<DataTemplate>ITEM01</DataTemplate> | |||
<Item> | |||
<No ValidateField="1" ProcessingOrder="1">1000</No> | |||
<No2 ValidateField="1" ProcessingOrder="2"></No2> | |||
<Description ValidateField="1" ProcessingOrder="3">Bicycle</Description> | |||
<Description2 ValidateField="1" ProcessingOrder="5"></Description2> | |||
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure> | |||
<UnitPrice ValidateField="1" ProcessingOrder="14">4000</UnitPrice> | |||
<UnitCost ValidateField="1" ProcessingOrder="18">350.594</UnitCost> | |||
<ReorderPoint ValidateField="1" ProcessingOrder="27">0</ReorderPoint> | |||
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight> | |||
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight> | |||
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume> | |||
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo> | |||
<DefaultDimensions> | |||
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension> | |||
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension> | |||
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">FINISHED</Dimension> | |||
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension> | |||
</DefaultDimensions> | |||
</Item> | |||
<Item> | |||
<No ValidateField="1" ProcessingOrder="1">1001</No> | |||
<No2 ValidateField="1" ProcessingOrder="2"></No2> | |||
<Description ValidateField="1" ProcessingOrder="3">Touring Bicycle</Description> | |||
<Description2 ValidateField="1" ProcessingOrder="5"></Description2> | |||
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure> | |||
<UnitPrice ValidateField="1" ProcessingOrder="14">4000</UnitPrice> | |||
<UnitCost ValidateField="1" ProcessingOrder="18">350.594</UnitCost> | |||
<ReorderPoint ValidateField="1" ProcessingOrder="27">0</ReorderPoint> | |||
<GrossWeight ValidateField= | |||
</ItemList> | </ItemList> | ||
</source> | |||
==XML schema (XSD)== | |||
Schema on püütud teha võimalikult täpseks - automaatselt tekitatud failile on lisatud vajalikud tüübikirjeldused ning vastavalt ka ära muudetud andmete tüübid. | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
<xs:simpleType name="Code20"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="20"/> | |||
<xs:pattern value="([A-Z0-9])+"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="Code20B"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="20"/> | |||
<xs:pattern value="([A-Z0-9])*"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="Code10"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="10"/> | |||
<xs:pattern value="([A-Z0-9])+"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:simpleType name="Text50"> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="50"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
<xs:element name="ItemList"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="TableID" type="xs:unsignedInt" /> | |||
<xs:element name="PageID" type="xs:unsignedInt" /> | |||
<xs:element name="DataTemplate" type="xs:string" /> | |||
<xs:element maxOccurs="unbounded" name="Item"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="No" minOccurs="1" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Code20"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="No2" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Code20B"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Description" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Text50"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Description2" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Text50"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="BaseUnitofMeasure" minOccurs="1" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Code10"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="UnitPrice" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="UnitCost" maxOccurs="1"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="ReorderPoint"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="GrossWeight"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="NetWeight"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="UnitVolume"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="TariffNo"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Code20B"> | |||
<xs:attribute name="ValidateField" type="xs:boolean" /> | |||
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="DefaultDimensions"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="Dimension"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="Code20B"> | |||
<xs:attribute name="GlobalDimension" type="xs:unsignedByte" use="required" /> | |||
<xs:attribute name="DimensionCode" type="xs:string" use="required" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> | |||
</source> | |||
==Style Sheet 1== | |||
Lihtne stiilileht, mis konverteerib Example XML-i tavaliseks tabeliks. Natuke erilisemaks teeb see, et ka kaks dimensiooni kaasatakse tavalisse tabelisse | |||
Failinimi Team Foundation-is on Items 1.xslt | |||
Example1.xml ja Items 1.xslt koostöö on nähtav [[Anna,_Alvar,_Urmas_Items1AsHTML|siin]] | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> | |||
<xsl:output method="html" indent="yes"/> | |||
<xsl:template match="/"> | |||
<html> | |||
<head> | |||
<title>Just item list</title> | |||
</head> | |||
<body> | |||
<p> | |||
<h1> | |||
Item list | |||
</h1> | |||
</p> | |||
<table border="0"> | |||
<tr> | |||
<th>Item No.</th> | |||
<th>Description</th> | |||
<th>UOM</th> | |||
<th>Unit Price</th> | |||
<th>Unit Cost</th> | |||
<th>Reorder Point</th> | |||
<th>Category</th> | |||
<th>Product Group</th> | |||
</tr> | |||
<xsl:for-each select="ItemList/Item"> | |||
<tr> | |||
<td><xsl:value-of select="No"/></td> | |||
<td><xsl:value-of select="Description"/></td> | |||
<td><xsl:value-of select="BaseUnitofMeasure"/></td> | |||
<td><xsl:value-of select="UnitPrice"/></td> | |||
<td><xsl:value-of select="UnitCost"/></td> | |||
<td><xsl:value-of select="ReorderPoint"/></td> | |||
<xsl:for-each select="DefaultDimensions/Dimension"> | |||
<xsl:if test="@DimensionCode='CATEGORY'"> | |||
<td><xsl:value-of select="."/></td> | |||
</xsl:if> | |||
</xsl:for-each> | |||
<xsl:for-each select="DefaultDimensions/Dimension"> | |||
<xsl:if test="@DimensionCode='PRODGROUP'"> | |||
<td><xsl:value-of select="."/></td> | |||
</xsl:if> | |||
</xsl:for-each> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</body> | |||
</html> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</source> | |||
==Style Sheet 2== | |||
Sellega sai "natuke" vaeva nähtud. Unikaalsete rühma liikmete (antud faili puhul siis kategooriate) leidmine oli ilma Xpath 2.0-ita ja ilma igasuguse teadmiseta KEY konstruktsiooni kasutamisest tegelikult paras pähkel. Aga noh - tulemuseks on see, et nüüd ma saan vist enam-vähem aru kuidas "key"-d kasutatakse. Tõenäoliselt saaks siinseid päringud veel elegantsemaks teha, aga kui asja tööle sain, siis ei hoolinud enam suurt ;-) Ka siin pole html lehe enda kaunidusele suurt tähelepanu pööratud - pidasin andmete kättesaamist olulisemaks. | |||
Failinimi Team Foundation-is on Items 2.xslt | |||
Selle stiililehe töö tulemus on näha [[Anna, Alvar, Urmas Items2AsHTML|siin]] | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> | |||
<xsl:output method="html" indent="yes"/> | |||
<xsl:key name="Category" match="/ItemList/Item/DefaultDimensions/Dimension/text()" use="."/> | |||
<xsl:template match="/"> | |||
<html> | |||
<head> | |||
<title>Items by Category</title> | |||
</head> | |||
<body> | |||
<p> | |||
<h1> | |||
Items by Category | |||
</h1> | |||
</p> | |||
<!-- gather categories--> | |||
<xsl:for-each select="ItemList/Item/DefaultDimensions/Dimension[@DimensionCode='CATEGORY']/."> | |||
<xsl:sort select="." order="ascending"/> | |||
<xsl:variable name="CurrentCategory" select="."></xsl:variable> | |||
<xsl:if test="generate-id(key('Category', $CurrentCategory)[1]) = generate-id(text())"> | |||
<p> | |||
<xsl:value-of select="text()"/> | |||
</p> | |||
<table border="0"> | |||
<tr> | |||
<th>Item No.</th> | |||
<th>Description</th> | |||
<th>UOM</th> | |||
<th>Unit Price</th> | |||
<th>Unit Cost</th> | |||
<th>Reorder Point</th> | |||
<th>Product Group</th> | |||
</tr> | |||
<xsl:for-each select="/ItemList/Item"> | |||
<xsl:if test="DefaultDimensions/Dimension[@DimensionCode='CATEGORY']/.=$CurrentCategory"> | |||
<tr> | |||
<td> | |||
<xsl:value-of select="No"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="Description"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="BaseUnitofMeasure"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="UnitPrice"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="UnitCost"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="ReorderPoint"/> | |||
</td> | |||
<xsl:for-each select="DefaultDimensions/Dimension"> | |||
<xsl:if test="@DimensionCode='PRODGROUP'"> | |||
<td> | |||
<xsl:value-of select="."/> | |||
</td> | |||
</xsl:if> | |||
</xsl:for-each> | |||
</tr> | |||
<p></p> | |||
</xsl:if> | |||
</xsl:for-each> | |||
</table> | |||
<p></p> | |||
</xsl:if> | |||
</xsl:for-each> | |||
</body> | |||
</html> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</source> | |||
==Retsensioon== | |||
Viide retsenseeritavale tööle: https://wiki.itcollege.ee/index.php/Teine-meeskond | |||
Töö formaalse poole pealt on täidetud kõik nõuded (norida võib ehk retsensiooni pikkusega, mis on ca 90 sõna nõutud 200 asemel). | |||
Loodud on lihtne ja hästi struktureeritud XML fail, mille sisust saab kohe peale vaadates aru. | |||
Mis puudutab ravikuuri loogikat, siis seda ei ole ilmselt otstarbekas kuupäevaselt paika panna (inimesed ei saa/taha kohe alustada ja kui olete märganud, siis öeldakse alati ravikuur stiilis: “x korda päevas y nädala jooksul"). Piisaks nimetada kuuri pikkus ja ravimi manustamise sagedus ja patsient otsustab ise, millal ta kuuriga alustab. Rakenduse poole pealt oleks ka lihtsam võtta XML’ist ravikuuri pikkus ja arvutada algus- ja lõpukuupäev (kui selleks tekib vajadus). | |||
Sama kehtib ka sümptomite kohta. Nõutud on sümptomite alguse registreerimine kellaajalise täpsusega. See tekitab ilmselt olukorra, kus sisestatakse sümptomi ilmnemise kuupäev, kuid kellaaeg määratakse huupi, sest tõenäoliselt seda ei mäletata. Liigsed sammud, mida pole vaja. | |||
Tõeväärtuste hoidmiseks on olemas <i>true/false</i> või 0 ja 1. Antud XML faili puhul kasutatakse string väärtuseid yes/no (attribuutide <i>isPrescriptionDrug</i>, <i>hasInsurance</i> ja <i>isPrivate</i> puhul) | |||
Isukukoodi tüübiks on XSD failis määratud <i>integer</i>. Parem valik oleks ilmselt string. Isikukoodiga ei tehta arvutusi (puudub vajadus hoida seda <i>int</i> kujul). Kui Eestis on see hetkel tõesti puhtalt arvuline siis see ei kehti igalpool mujal (ega pruugi tulevikus ka Eestis kehtida). See aga tekitab olukorra, kus näiteks turisti isikukoodi on võimatu sisestada. | |||
=Veebiteenus= | |||
==<i>Business Case</i>== | |||
Teenuse äriline idee on pakkuda tootmise- ja logistikattevõtetele võimalust tarbida, üldjuhul ERP süsteemides olevat, infot töötajate ülesannete kohta väljapool suhteliselt kallist ERP klientprogrammi ning kasutades selleks soovi korral ERP platvormist erinevate tehnoloogiale üles ehitatud tark- ja/või riistvara (ehk siis otse öeldes - midagi muud peale Windowsi). Teisiti sõnastades - võimaldav teenus hoida kokku ERP tarkvara kasutajalitsentsidelt ja/või kasutada keerulistes tingimustes spetsiaalset tark- ja riistvara. | |||
Tavakasutaja saab näha ainult oma kasutajaimega seotud ülesandeid | |||
Ülemus näeb oma alluvate ülesandeid | |||
Superkasutaja saab näha kõiki | |||
Süsteemi konfiguratsiooni hoitakse veebiteeusega alati kaasasolevas localdb andmebaasis | |||
== Viited == | |||
Teenuse arendus asub Visualstudio.com aadressil https://urmas.visualstudio.com/DefaultCollection/XML%20for%20IT%20College/_versionControl#path=%24%2FXML+for+IT+College%2FCode%2FService+Application&_a=contents | |||
Veebiteenus väljastab nüüd ka kenasti andmebaasist andmeid | |||
Turvat veel ei ole |
Latest revision as of 19:54, 21 May 2013
Võrgurakendused II: hajussüsteemide ehitamine
Kodutöö leht
Rühma liikmed:
Anna Lütsepp Alvar Väinola Urmas Pill
XML
TeamFoundation projekt (urmas.visualstudio.com): [1]
Faili kirjeldus
Võtsin xml tekitamise aluseks ühe majandustarkvarast pakutava demoandmetega kaupade tabeli. Sealt sai võetud mõned "huvitavamad" andmed ning lisatud ka setud tabelist kaupadega seotud dimensioonide vaikeväärtused. Tulemuseks on xml fail, mille nimeks on meie TeamFoundationi projektis Example1.xml
XML fail
<?xml version="1.0" encoding="utf-8" ?>
<ItemList>
<TableID>27</TableID>
<PageID>31</PageID>
<DataTemplate>ITEM01</DataTemplate>
<Item>
<No ValidateField="1" ProcessingOrder="1">1000</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Bicycle</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">4000</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">350.594</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">0</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">FINISHED</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1001</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Touring Bicycle</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">4000</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">350.594</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">0</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">FINISHED</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1100</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Front Wheel</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">1000</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">129.671</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">COMPONENT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1110</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Rim</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">1.05</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">200</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1120</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Spokes</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">2</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">5000</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1150</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Front Hub</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">500</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">12.441</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1151</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Axle Front Wheel</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">0.45</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1155</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Socket Front</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">0.77</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1160</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Tire</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">1.23</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1170</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Tube</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">1.75</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1200</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Back Wheel</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">1200</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">129.6815</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">COMPONENT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1250</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Back Hub</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">1100</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">12.4515</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1251</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Axle Back Wheel</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">0.33</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1255</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Socket Back</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">0.9</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1300</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Chain Assy</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">800</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">13.1565</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PRODUCTION</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">COMPONENT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1310</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Chain</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">1.99</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1320</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Chain Wheel Front</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">4.66</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1330</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Chain Wheel Back</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">5.88</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1400</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Mudguard front</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">3.9</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1450</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Mudguard back</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">3.9</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1500</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Lamp</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">5.2</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1600</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Bell</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">2.7</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1700</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Brake</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">600</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">9.765</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1710</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Hand rear wheel Brake</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">4.5</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1720</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Hand front wheel Brake</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">4.8</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1800</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Handlebars</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">2.12</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
<Item>
<No ValidateField="1" ProcessingOrder="1">1850</No>
<No2 ValidateField="1" ProcessingOrder="2"></No2>
<Description ValidateField="1" ProcessingOrder="3">Saddle</Description>
<Description2 ValidateField="1" ProcessingOrder="5"></Description2>
<BaseUnitofMeasure ValidateField="1" ProcessingOrder="6">PCS</BaseUnitofMeasure>
<UnitPrice ValidateField="1" ProcessingOrder="14">0</UnitPrice>
<UnitCost ValidateField="1" ProcessingOrder="18">7.2</UnitCost>
<ReorderPoint ValidateField="1" ProcessingOrder="27">100</ReorderPoint>
<GrossWeight ValidateField="1" ProcessingOrder="34">0</GrossWeight>
<NetWeight ValidateField="1" ProcessingOrder="35">0</NetWeight>
<UnitVolume ValidateField="1" ProcessingOrder="37">0</UnitVolume>
<TariffNo ValidateField="1" ProcessingOrder="40"></TariffNo>
<DefaultDimensions>
<Dimension GlobalDimension="1" DimensionCode="PROJECT">C800</Dimension>
<Dimension GlobalDimension="2" DimensionCode="DEPARTMENT">PURCHASE</Dimension>
<Dimension GlobalDimension="0" DimensionCode="CATEGORY">RAWMAT</Dimension>
<Dimension GlobalDimension="0" DimensionCode="PRODGROUP">BIKES</Dimension>
</DefaultDimensions>
</Item>
</ItemList>
XML schema (XSD)
Schema on püütud teha võimalikult täpseks - automaatselt tekitatud failile on lisatud vajalikud tüübikirjeldused ning vastavalt ka ära muudetud andmete tüübid.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Code20">
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
<xs:pattern value="([A-Z0-9])+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Code20B">
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
<xs:pattern value="([A-Z0-9])*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Code10">
<xs:restriction base="xs:string">
<xs:maxLength value="10"/>
<xs:pattern value="([A-Z0-9])+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Text50">
<xs:restriction base="xs:string">
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ItemList">
<xs:complexType>
<xs:sequence>
<xs:element name="TableID" type="xs:unsignedInt" />
<xs:element name="PageID" type="xs:unsignedInt" />
<xs:element name="DataTemplate" type="xs:string" />
<xs:element maxOccurs="unbounded" name="Item">
<xs:complexType>
<xs:sequence>
<xs:element name="No" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Code20">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="No2" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Code20B">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Description" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Text50">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Description2" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Text50">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="BaseUnitofMeasure" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Code10">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitPrice" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitCost" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ReorderPoint">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="GrossWeight">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="NetWeight">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitVolume">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="TariffNo">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Code20B">
<xs:attribute name="ValidateField" type="xs:boolean" />
<xs:attribute name="ProcessingOrder" type="xs:unsignedShort" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="DefaultDimensions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Dimension">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Code20B">
<xs:attribute name="GlobalDimension" type="xs:unsignedByte" use="required" />
<xs:attribute name="DimensionCode" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Style Sheet 1
Lihtne stiilileht, mis konverteerib Example XML-i tavaliseks tabeliks. Natuke erilisemaks teeb see, et ka kaks dimensiooni kaasatakse tavalisse tabelisse Failinimi Team Foundation-is on Items 1.xslt
Example1.xml ja Items 1.xslt koostöö on nähtav siin
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Just item list</title>
</head>
<body>
<p>
<h1>
Item list
</h1>
</p>
<table border="0">
<tr>
<th>Item No.</th>
<th>Description</th>
<th>UOM</th>
<th>Unit Price</th>
<th>Unit Cost</th>
<th>Reorder Point</th>
<th>Category</th>
<th>Product Group</th>
</tr>
<xsl:for-each select="ItemList/Item">
<tr>
<td><xsl:value-of select="No"/></td>
<td><xsl:value-of select="Description"/></td>
<td><xsl:value-of select="BaseUnitofMeasure"/></td>
<td><xsl:value-of select="UnitPrice"/></td>
<td><xsl:value-of select="UnitCost"/></td>
<td><xsl:value-of select="ReorderPoint"/></td>
<xsl:for-each select="DefaultDimensions/Dimension">
<xsl:if test="@DimensionCode='CATEGORY'">
<td><xsl:value-of select="."/></td>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="DefaultDimensions/Dimension">
<xsl:if test="@DimensionCode='PRODGROUP'">
<td><xsl:value-of select="."/></td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Style Sheet 2
Sellega sai "natuke" vaeva nähtud. Unikaalsete rühma liikmete (antud faili puhul siis kategooriate) leidmine oli ilma Xpath 2.0-ita ja ilma igasuguse teadmiseta KEY konstruktsiooni kasutamisest tegelikult paras pähkel. Aga noh - tulemuseks on see, et nüüd ma saan vist enam-vähem aru kuidas "key"-d kasutatakse. Tõenäoliselt saaks siinseid päringud veel elegantsemaks teha, aga kui asja tööle sain, siis ei hoolinud enam suurt ;-) Ka siin pole html lehe enda kaunidusele suurt tähelepanu pööratud - pidasin andmete kättesaamist olulisemaks. Failinimi Team Foundation-is on Items 2.xslt
Selle stiililehe töö tulemus on näha siin
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:key name="Category" match="/ItemList/Item/DefaultDimensions/Dimension/text()" use="."/>
<xsl:template match="/">
<html>
<head>
<title>Items by Category</title>
</head>
<body>
<p>
<h1>
Items by Category
</h1>
</p>
<!-- gather categories-->
<xsl:for-each select="ItemList/Item/DefaultDimensions/Dimension[@DimensionCode='CATEGORY']/.">
<xsl:sort select="." order="ascending"/>
<xsl:variable name="CurrentCategory" select="."></xsl:variable>
<xsl:if test="generate-id(key('Category', $CurrentCategory)[1]) = generate-id(text())">
<p>
<xsl:value-of select="text()"/>
</p>
<table border="0">
<tr>
<th>Item No.</th>
<th>Description</th>
<th>UOM</th>
<th>Unit Price</th>
<th>Unit Cost</th>
<th>Reorder Point</th>
<th>Product Group</th>
</tr>
<xsl:for-each select="/ItemList/Item">
<xsl:if test="DefaultDimensions/Dimension[@DimensionCode='CATEGORY']/.=$CurrentCategory">
<tr>
<td>
<xsl:value-of select="No"/>
</td>
<td>
<xsl:value-of select="Description"/>
</td>
<td>
<xsl:value-of select="BaseUnitofMeasure"/>
</td>
<td>
<xsl:value-of select="UnitPrice"/>
</td>
<td>
<xsl:value-of select="UnitCost"/>
</td>
<td>
<xsl:value-of select="ReorderPoint"/>
</td>
<xsl:for-each select="DefaultDimensions/Dimension">
<xsl:if test="@DimensionCode='PRODGROUP'">
<td>
<xsl:value-of select="."/>
</td>
</xsl:if>
</xsl:for-each>
</tr>
<p></p>
</xsl:if>
</xsl:for-each>
</table>
<p></p>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Retsensioon
Viide retsenseeritavale tööle: https://wiki.itcollege.ee/index.php/Teine-meeskond
Töö formaalse poole pealt on täidetud kõik nõuded (norida võib ehk retsensiooni pikkusega, mis on ca 90 sõna nõutud 200 asemel).
Loodud on lihtne ja hästi struktureeritud XML fail, mille sisust saab kohe peale vaadates aru.
Mis puudutab ravikuuri loogikat, siis seda ei ole ilmselt otstarbekas kuupäevaselt paika panna (inimesed ei saa/taha kohe alustada ja kui olete märganud, siis öeldakse alati ravikuur stiilis: “x korda päevas y nädala jooksul"). Piisaks nimetada kuuri pikkus ja ravimi manustamise sagedus ja patsient otsustab ise, millal ta kuuriga alustab. Rakenduse poole pealt oleks ka lihtsam võtta XML’ist ravikuuri pikkus ja arvutada algus- ja lõpukuupäev (kui selleks tekib vajadus).
Sama kehtib ka sümptomite kohta. Nõutud on sümptomite alguse registreerimine kellaajalise täpsusega. See tekitab ilmselt olukorra, kus sisestatakse sümptomi ilmnemise kuupäev, kuid kellaaeg määratakse huupi, sest tõenäoliselt seda ei mäletata. Liigsed sammud, mida pole vaja.
Tõeväärtuste hoidmiseks on olemas true/false või 0 ja 1. Antud XML faili puhul kasutatakse string väärtuseid yes/no (attribuutide isPrescriptionDrug, hasInsurance ja isPrivate puhul)
Isukukoodi tüübiks on XSD failis määratud integer. Parem valik oleks ilmselt string. Isikukoodiga ei tehta arvutusi (puudub vajadus hoida seda int kujul). Kui Eestis on see hetkel tõesti puhtalt arvuline siis see ei kehti igalpool mujal (ega pruugi tulevikus ka Eestis kehtida). See aga tekitab olukorra, kus näiteks turisti isikukoodi on võimatu sisestada.
Veebiteenus
Business Case
Teenuse äriline idee on pakkuda tootmise- ja logistikattevõtetele võimalust tarbida, üldjuhul ERP süsteemides olevat, infot töötajate ülesannete kohta väljapool suhteliselt kallist ERP klientprogrammi ning kasutades selleks soovi korral ERP platvormist erinevate tehnoloogiale üles ehitatud tark- ja/või riistvara (ehk siis otse öeldes - midagi muud peale Windowsi). Teisiti sõnastades - võimaldav teenus hoida kokku ERP tarkvara kasutajalitsentsidelt ja/või kasutada keerulistes tingimustes spetsiaalset tark- ja riistvara.
Tavakasutaja saab näha ainult oma kasutajaimega seotud ülesandeid Ülemus näeb oma alluvate ülesandeid Superkasutaja saab näha kõiki
Süsteemi konfiguratsiooni hoitakse veebiteeusega alati kaasasolevas localdb andmebaasis
Viited
Teenuse arendus asub Visualstudio.com aadressil https://urmas.visualstudio.com/DefaultCollection/XML%20for%20IT%20College/_versionControl#path=%24%2FXML+for+IT+College%2FCode%2FService+Application&_a=contents
Veebiteenus väljastab nüüd ka kenasti andmebaasist andmeid Turvat veel ei ole