You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Hans Bakker <ma...@antwebsystems.com> on 2010/07/01 08:15:51 UTC

Re: make soap webservices with descriptive input/output instead of hashmaps:extend service definition: correction

correction on the previous mail, the proposal should be:

So i would like to suggest for a list containing maps:
<service name="[serviceName]" engine="[engine]" location="[location]"
        invoke="[methodName]">
    <description>...</description>
    <attribute name="[attribute name 1]" type="List"
                                mode="[mode]" optional="[optional]">
       <attribute name="[attribute name 3]" type="Map">
           <attribute name="[attribute name 4]" type="String"/>
           <attribute name="[attribute name 5]" type="String"/>
       </attribute>
    </attribute>
</service>

regards,
Hans


On Thu, 2010-07-01 at 11:02 +0700, Hans Bakker wrote:
> Sure we need to extend the service definition to define what kind of
> data is inside the complex elements (list,map).
> 
> I would however also suggest to give this data also a name so it is not
> required to look in the actual implementation what the list or map
> contains.
> 
> 
> So i would like to suggest for a list containing maps:
> <service name="[serviceName]" engine="[engine]" location="[location]"
> 	invoke="[methodName]">
>     <description>...</description>
>     <attribute name="[attribute name 1]" type="List"
> 				mode="[mode]" optional="[optional]">
>        <attribute name="[attribute name 3]" type="Map">
>            <attribute name="[attribute name 4]" type="String">
>            <attribute name="[attribute name 5]" type="String">
>        </attribute>
>        <attribute name="[attribute name 3]" type="Map">
>            <attribute name="[attribute name 4]" type="String">
>            <attribute name="[attribute name 5]" type="String">
>        </attribute>
>     </attribute>
> </service>
> 
> Regards,
> Hans
> 
> 
> 
> 
> 
> 
> On Wed, 2010-06-30 at 10:14 +0300, Chatree Srichart wrote:
> > Hi community. I'd like to disscuss about service's attribute definition
> > descriptive at servicedef.
> > 
> > I need to integrate OFBiz with other system based on web service. But the
> > problem I found OFBiz's SOAP message is not compatible to the other
> > services. Now the OFBiz's SOAP message be like hash map, with key and value.
> > It is good for communication between OFBiz to OFBiz but it is not good for
> > OFBiz to the other systems.
> > 
> > The current SOAP message of OFBiz look like this:
> > 
> > <[serviceName]>
> >     <map-Map>
> >         <map-Entry>
> >             <map-Key>
> >                 <std-String value="[parameter name]"/>
> >             </map-Key>
> >            <map-Value>
> >                <std-String value="[parameter value]"/>
> >                or
> >                <col-Collection>
> >                    ....
> >                    ....
> >                </col-Collection>
> >                or
> >                <map-Map>
> >                    ....
> >                    ....
> >                <map-Map>
> >            </map-Value>
> >         <map-Entry>
> >     </map-Map>
> > </[serviceName]>
> > 
> > The parameter type would specify by tag's name such as: map-Map, std-String,
> > isn't in schema.
> > 
> > I need the SOAP message like this:
> > 
> > <[param name>
> >     [param value]
> > </[param name]>
> > 
> > or
> > 
> > <[param name 1]>
> >     <[param name 2]>
> >         <item>[param value 1]</item>
> >         <item>[param value 2]</item>
> >     </[param name 2>
> > </[param name1]>
> > 
> > For the type of [param name], would be define in schema.
> > 
> > But I can not convert servicedef to schema at all now. I have a problem
> > about attributes which have complex type such as: List, Map, GenericValue. I
> > can not know what type be inside these complex type.
> > 
> > So, would it be possible if I could add some information in attribute tag at
> > servicedef like this:
> > 
> > 
> > <service name="[serviceName]" engine="[engine]" location="[location]"
> > invoke="[methodName]">
> >     <description>...</description>
> >     <attribute name="[attribute name 1]" type="[attribute type]"
> > mode="[mode]" optional="[optional]">
> >        <structure itemType="List">
> >            <attribute name="[attribute name 2]" type="Map">
> >                <structure itemType="String"/>
> >                <structure itemType="String"/>
> >            </attribute>
> >        </structure>
> >     </attribute>
> > </service>
> > 
> > The [attribute name 1] is a normal service's attribute.
> > The first structure tag for define a structure of [attribute name 1] by has
> > "itemType" attribute to tell the type of inner attribute.
> > The [attribute name 2] is a item that be contained in the first structure
> > tag.
> > The second and thrid structure tags to tell a structure in [attribute name
> > 2].
> > 
> > For this format, I can generate schema for the complex type.
> > 
> > Do you have any idea about this?
> > 
> > Regards,
> > Chatree Srichart
> 

-- 
Ofbiz on twitter: http://twitter.com/apache_ofbiz
Myself on twitter: http://twitter.com/hansbak
Antwebsystems.com: Quality services for competitive rates.