hmmmm.
he is trying to call all services thru one call, passing the service.
so I would expect a new entity to support that and java to process
calling all the services.
plus the locations seems strange.

David E Jones sent the following on 7/24/2008 9:43 AM:
> 
> This seems to be more of a simple-method problem than a service engine one.
> 
> Basically when the call-service operation in the simple-method runs it
> doesn't expand the service-name attribute's value, so this doesn't work.
> The only way to do it would be to change the implementation of that
> operation (pretty simply done in the CallService.java file) so that it
> uses the FlexibleStringExpander on that value.
> 
> -David
> 
> 
> On Jul 24, 2008, at 9:50 AM, BJ Freeman wrote:
> 
>> I suggest you read up on the service engine
>> http://docs.ofbiz.org/display/OFBTECH/Service+Engine+Guide
>> and use a xml editor that reads the xsd for services.
>> if you have defined your xml file with the appropriate header this
>> should show what will not work.
>> pick any servicedef/service.xml as an example.
>>
>> Radoslav Tomko sent the following on 7/24/2008 12:02 AM:
>>> Hi,
>>>
>>> I am trying to make "common" service for my project, and i am facing
>>> problem
>>> using dynamic service name.
>>> My common service has Map parameter, and then it calls required service
>>> using values from that Map.
>>>
>>> Sample:
>>>
>>>    Service definition:
>>>
>>>    <service name="updateCommon" engine="simple"
>>>            location="com/codes/CommonServices.xml"
>>> invoke="updateCommon" auth="true">
>>>        <description>Update entity - common</description>
>>>        <attribute name="entityName" type="String" mode="IN"
>>> optional="false"/>
>>>        <attribute name="data" type="Map" mode="IN" optional="false"/>
>>>    </service>
>>>
>>>    Service:
>>>
>>>    <simple-method method-name="updateCommon" short-description="Update
>>> entity - common">
>>>        <!-- no problem -->
>>>        <set-service-fields
>>> service-name="update${parameters.entityName}" map-name="parameters.data"
>>> to-map-name="serviceParams"/>
>>>
>>>        <!- there is problem -->
>>>        <call-service service-name="update${parameters.entityName}"
>>> in-map-name="serviceParams">
>>>            <results-to-map map-name="result"/>
>>>        </call-service>
>>>    </simple-method>
>>>
>>>
>>> And I want it to call service like this (let say, I pass 'GlAccount' in
>>> entity-name parameter for updateCommon service):
>>>
>>>    <service name="updateGlAccount" default-entity-name="GlAccount"
>>> engine="simple"
>>>            location="com/accounting/ledger/GeneralLedgerServices.xml"
>>> invoke="updateGlAccount" auth="true">
>>>        <description>Update a GlAccount record</description>
>>>        <auto-attributes include="pk" mode="IN" optional="false"/>
>>>        <auto-attributes include="nonpk" mode="IN" optional="true"/>
>>>    </service>
>>>
>>>
>>> I test that for "<set-service-fields ...>" tag the dynamic use of
>>> service-name is working fine, and parameters for service
>>> are filled correctly, but for "call service" tag it's not working. It
>>> gives me an error saying "Cannot locate service by
>>> name (update${parameters.entityName})".
>>>
>>> I know to do that using service written in java, but this looks more
>>> simply :-)
>>>
>>> Is there some way to solve that or is there any other way to do that,
>>> except java ?
>>>
>>>
>>> Thanx for any advance,
>>>
>>> Radoslav Tomko
>>>
>>>
>>>
>>>
>>>
>>
> 
> 
> 
> 

Reply via email to