[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