Minutes of SWSA Telecon of September 30, 2003 Attendees: Mark Burstein, Chris Bussler, Michal Zaremba, Mike Dean, Tim Finin, Discussion of (unwritten) use case by Chris: Collecting examples: Contrast several standards - restate some requirements 3 examples: RosettaNet, EDI, ?? RosettaNet (rosettanet.org) --------------------------- Incept by customer companies - end users rather than incl Intel, IT equip providers. EDI is expensive, go for XML Lots of startup activity. Prototypical sites. Intel now wants all suppliers on Rosetta net by x time. - Covers whole stack, PO, PIP (Partner Interface Processes), Reliability, Security, Messaging... - no other standards needed. - Data and Standards Layer - PO message times (create/update), invoices, shipment notices... 100s 2 types vocab, tecnical, non-technical - Includes values to put in fields to id products. Background - too many miscommunications without standard content vocab Only one way to reference a chip, for example. one type of date format. Different doctypes for diff msgs. Create PO, Update PO... SO: Companies that interoperate don't have to know what is in other's infrastructure. True isolation at data level. Contribution: defined processes (PIPs) but not a process language. E.g. PO process Used UML to define the processes. Human readable explanation around it. This was only semi-formal. Goal was that the level of effort to integrate becomes less the more the defs are available. Do not define two processes (one for buyer, one for seller). Seller defines both halfs, but each implements one half. All processes one of two patterns (send or send/recieve reply). Tim: Synchronous msging? CB: Based on HTTP, which is synchronous. You don't know if your partner breaks it. If I send PO, then I could process and respond. Or I could put it in a queue, which makes it asynch. This doesnt violate protocol if you generate an ACK. For a PIP unit, Before could be a RFQ, after PO an invoice. These are 3 separate processes. Clear distinction between communicating and how you drive it. MB: Like WSDL? CB: Not quite. WSDL is asynch. Doesn't define processes. CB: Reliability layer. When you send a msg it might get lost. Problem is if lost, but I don't know, then how do I know if it is lost. So each msg has a low-level ACK. But this is a recursive problem - Solution: send PO up to 3 times then assume failure. Last element: Send PO - ack, w. full or partial shipment specified. On seller side, might have machine crash, so must communicate problem/delay/compensate. So use 'out of bound msg' to establish comm based on underlying business model for exception handling. But if this happens too fast - PIP msgs interleaved with asynch out of bound msgs, then problem. Then my implementation must relate the two msgs. Similar problem: send PO then immediate Cancel PO. But there me asynch delay on receiving end. The Cancel may happen before ack PO completed. Either you must process each one fully, or try to shortcut before it reaches the back end. Morale: There are relationships between messages that must be maintained regardless of if they msgs are itempotent then not a problem. This is a concurrency question. ================ Other example: EDI All implemented around EDI2, except that the standard doesnt define processes at all. THere are msg defs, vocab, acks, but does not have relationships between msgs. So industry has processes, but there is best practice. RosettaNet made explicit what is implicit in EDI. EDI would need a different language. EDI does have one thing. They separated definition of basic elements from msgs. Msgs are compositions of these elements. So scope of changes is either msgs or elements (versioned separately), where with Rosetta it is all scoped locally using XSD. EDI winning mostly due to fixed install time. EDI-INT (EDI internet) - has compliance test done by 3rd party - so certified to work well. So EDI assumes not everyone upgrades at the same time. Each msg is taged with version number. (New version every half year). EDI software can handle new versions without change. So even if running different versions, you adjust. But trading partner agreements in place say which version each partner can understand. Send CD to put into db every half year. But if field is added, or redefined, you must change mapping to back end. MP: There must be a protocol to figure out what version your partner is using. CPP-CPA (Collaboration Partner Profile, CPA - agreement part) Before this standard, there were non-standard versions w. phone number, public Key,... EBXML first to consider this and try to standardize it. Distributed model would be to ask which version - problem is that that msg has a version. MB: But hopefully the msg that asked which version wouldn't change (otherwise recurse). MB: I'm thinking about how to recast this in terms of the semantic web. You'd like to have procedures be versioned separately from the ontologies that they used. But right now, using URIs it is awkward for versioning, since (e.g.) every process would have to be versioned whenever an ontology it used was changed. We should at least raise this issue in an example use case. MB: Do you version all the elements in the same step (even if most don't change) or do you have a configuration - element by element. But then you have a cascading versioning problem. MikeDean: OWL has some primitives for versioning, deprecation of ontologies (Annotation Properties)