[OPEN-ILS-DEV] OpenSRF API Question

dkyle at grpl.org dkyle at grpl.org
Sun May 11 17:41:31 EDT 2008


> On Fri, May 9, 2008 at 2:01 PM, Doug Kyle <dkyle at grpl.org> wrote:
>> I'm working on a small utility program that will pull up patron info.
>> It's
>> currently set up as a cgi script:
>> #!/usr/bin/perl
>> use CGI qw(:standard);
>> require
>> '/usr/ports/Evergreen/Open-ILS/src/support-scripts/oils_header.pl';
>> my $bcode = param('barcode') || '0';
>> my $conf = '/openils/conf/opensrf_core.xml';
>> print header;
>> if ($bcode) {
>>       osrf_connect($conf);
>>       my $authtok = oils_login('<user>','<passwd>');
>>       $u = simplereq( ACTOR(),
>> 'open-ils.actor.user.fleshed.retrieve_by_barcode', $authtok, $bcode);
>>       print Dumper($u);
>> } else { print "Give me a barcode" }
>>
>> $u expands like so:
>>  DB<20> x $u
>> 0  Fieldmapper::actor::user=ARRAY(0x209af20)
>>  0  undef
>>  1  undef
>>  2  undef
>>  3  ARRAY(0x2099830)
>>     0  Fieldmapper::actor::user_address=ARRAY(0x20996a0)
>>        0  undef
>>        1  undef
>>        2  undef
>>        3  'MAILING'
>>        4  'Grand Rapids'
>>        5  'USA'
>>        6  'Kent'
>>        7  2
>>        8  44918
>>        9  'MI'
>>        10  '3051 Hearland Ave'
>>        11  undef
>>        12  3
>>        13  't'
>>        14  'f'
>>  4  ARRAY(0x2099bf0)
>>     0  Fieldmapper::actor::card=ARRAY(0x20999f0)
>>        0  undef
>>        1  undef
>>        2  undef
>>        3  't'
>>        4  21298004609999
>>        5  3
>>        6  3
>>  5  undef
>> etc and so on.........
>>
>> I'm wondering if there are existing methods for taking structures such
>> as $u
>> and mapping the appropriate names to the various array items?  and maybe
>> doing some pretty output formatting?  I'm just starting to look, but
>> thought
>> I might save some time by asking.
>>
>>
>
> Actually, because you have your config file in the default location
> (not required, but makes it simpler) and you're require'ing the
> oils_header.pl example, you already have access to the full
> Fieldmapper API, which happens to be what you're looking for.
>
> You'll notice that the arrays there are blessed into Perl packages
> like Fieldmapper::actor::card.  That package defines accessor/mutator
> methods for each field, on the actor.card table in this particular
> case, as well as some methods that return some class-level information
> and some administrative and state-maintenance fields.  You can see
> what accessors are defined by looking for the class in the Evergreen
> Fieldmapper IDL xml file, which you'll find at
> /openils/conf/fm_IDL.xml .  To find the class in question, you'll
> actually look an oils_obj:fieldmapper attribute containing the part of
> the Perl package name after 'Fieldmapper::'.
>
> That IDL file defines how Evergreen apps written in any supported
> programming language communicate with one another and interpret data.
> It's also used to generate a great many interfaces (programmatic and
> user interfaced) in Evergreen.
>
> --
> Mike Rylander
>  | VP, Research and Design
>  | Equinox Software, Inc. / The Evergreen Experts
>  | phone: 1-877-OPEN-ILS (673-6457)
>  | email: miker at esilibrary.com
>  | web: http://www.esilibrary.com
>

Thanks Mike! You actually answered 2 questions of mine.  Because aside
from trying to get a grip on the Fieldmapper code, I was wondering what
the 'IDL' that I had seen in various places was all about.




More information about the Open-ils-dev mailing list