|
Die Katalogerstellung nach dem BMEcat-Standard ist ein
aufwändiges Unterfangen.
BMEcat (BMEcat.org)
ist ein System zum Katalogaustausch zwischen Handelspartnern,
welche es vor allem bei unterschiedlichen Systemen möglich
macht, die jeweiligen anderen Kataloge zu bearbeiten.
Die Kataloge werden über XML kodiert und sind daher
von allen System lesbar und bearbeitbar.
Die ComputerMutter GmbH hat e strukturierten Klassen, solche Kataloge
automatisch zu erstellen.
Mit dieser Bibliothek wird die Erstellung eines Katalogs vereinfacht,
da nur noch entsprechende Methoden implementiert werden müssen.
Diese werden dann von einem Generator aufgerufen, welcher den BMECat
Katalog erstellt.
Der Generator und die Interface/Klassenbibliothek wird von der
ComputerMutter GmbH zur Zeit kostenfrei zur Verfügung gestellt.
Kopfdaten
Jeder BMEcat-Katalog beginnt mit einem Header.
Dieser Header hat gewisse Pflichtfelder (z.B. die Version, die Sprache, den Versender, ...)
und einige Kann-Felder.
Um einen Header zu verwenden, wird das IHeader-Interface implementiert.
IHeader head = new IHeader () {
public IAgreement getAgreement() {
de.comu.comunication.bmecat12.header.Agreement agr =
new de.comu.comunication.bmecat12.header.Agreement ();
agr.setId ( "MyAgreement" ); // dieses könnte auch aus einer Datenbank stammen...
agr.setStartDate ( new java.util.Date () );
agr.setEndDate ( new java.util.Date () );
return agr;
}
public IBuyer getBuyer() {
de.comu.comunication.bmecat12.header.Buyer buy =
new de.comu.comunication.bmecat12.header.Buyer ();
buy.setId ( ... );
buy.set...
}
public ICatalog getCatalog() {
Catalog c = new Catalog ();
c.setLanguage ( "DE" );
c.setVersion ( "1.2" );
c.setId ( "0000" );
c.setDate ( new java.util.Date() );
return c;
}
public String getGeneratorInfo() {
return "DemoBMECat";
}
public IHeaderSettings getSettings() {
IHeaderSettings headerSettings = new de.comu.comunication.bmecat12.header.HeaderSettings ();
// leere Settings...
return headerSettings;
}
public ISupplier getSupplier() {
de.comu.comunication.bmecat12.header.Supplier supplier =
new de.comu.comunication.bmecat12.header.Supplier ( );
supplier.setName( "Supplier Name");
supplier.set...
return supplier;
}
public IUserDefinedExtension getUserDefinedExtensionTag() {
// keine Extensions
return null;
}
};
|
Katalogdaten
Im BMEcat-Katalog kann auch eine Katalogstruktur abgebildet werden.
ICatalog catalog = new ICatalog () {
public ICatalogSettings getSettings() {
de.comu.comunication.bmecat12.catalog.CatalogSettings cs =
new de.comu.comunication.bmecat12.catalog.CatalogSettings();
return cs;
}
public TreeNode getTree() {
TreeNode cat1 = new TreeNode(null,"10-00-00-00","Computer");
// verknüpfe cat1 mit catHard
TreeNode catHard = new TreeNode(cat1,"10-01-00-00","Hardware");
TreeNode catHardPrint = new TreeNode(catHard,"10-01-01-00","Printer");
TreeNode catHardNote = new TreeNode(catHard,"10-01-02-00","Notebook");
TreeNode catSoft = new TreeNode(cat1,"10-02-00-00","Software");
TreeNode catSoftWin = new TreeNode(catSoft,"10-02-01-00","Windows");
TreeNode catSoftLin = new TreeNode(catSoft,"10-02-02-00","Linux");
return cat1;
}
};
|
Artikeldaten
Artikeldaten werden als Liste behandelt und über das IArticle-Interface angesprochen.
IArticleList article = new IArticleList() {
Vector articles = new Vector();
IArticle iart = new de.comu.comunication.bmecat12.article.AbstractArticle () {
public String getId(){return "ARTID1";}
public IArticleFeature getArticleFeature() {
return new IArticleFeature() {
public java.util.Vector getFeatureList () { return new java.util.Vector(); }
public java.lang.String getGroupId (){ return "no id"; }
public java.lang.String getSystemName () { return "noname"; }
};
}
public IArticleDetails getArticleDetails() {
return new de.comu.comunication.bmecat12.article.AbstractArticleDetails() {
public String getDescShort() {
return "Artikel 1";
}
};
}
public IArticleOrderDetails getArticleOrderDetails() {
return new de.comu.comunication.bmecat12.article.AbstractArticleOrderDetails() {
public String getOrderUnit() { return "1 PCE"; }
};
}
public IArticlePriceDetails getArticlePriceDetails() {
return new de.comu.comunication.bmecat12.article.SimpleArticlePriceDetails(
new AbstractArticlePrice() {
public java.lang.String getAmount() { return "10.00"; }
public java.lang.String getType() { return PRICETYPE_NET_LIST; }
}
);
}
};
articles.add(iart);
}
public IIterator iterator() {
return new IIterator() {
private int akt = 0;
public boolean hasNext() { return akt < articles.size(); }
public java.lang.Object next() {
Object o = articles.get(akt);
akt++; return o;
}
public void remove() { throw new Error("Remove not implemented"); }
};
}
};
|
Demoanwendung
Eine minimale Demoanwendung wurde implementiert, welche die wichtigsten, eben die oben beschriebenen
Felder des Katalogs abdeckt.
|