Carey,

your post didn't sound negative towards ARSperl. Even if it did, your 
feedback would still be welcome.

Maybe I'm able to shed some light on the issues that you have addressed. 
ARSperl does indeed not implement any of the ARGetMultiple* calls, with 
the notable exception of ARGetMultipleEntries. Nor is it possible to 
limit the ars_Get* functions to specific attributes (again with the 
exception of ars_GetEntry). The reason for this is that the developent 
of ARSperl, like the ARS API itself, is somehow quite "vendor centric", 
the "vendor" in this case being a group of volunteers, especially 
myself. To state it more directly: if I need something, then I'll 
implement it.

The ARGetMultiple* functions don't have very high priority from my point 
of view, since their functionality is already provided by the 
ars_GetList*, ars_Get* functions, so it's only a matter of performance. 
Of course perforance is important, but the sort of programs for which I 
would use the ARGetMultiple* functions (e.g. creating a report of  all 
fields in an application) usually don't require that much performance. 
If it runs maybe only once a week, then it's okay if it takes a few 
minutes. Please note also, that for entries, where permormace is 
probably the most important, there are ars_GetMultipleEntries, 
ars_GetListEntryWithFields as well as ars_BeginBulkEntryTransaction and 
ars_EndBulkEntryTransaction.

Another reason is that we rather seldom hear from users about 
shortcomings or desired features, so again every feedback will be 
welcome. I'd be quite interested what the "complex tasks" where for 
which ARSperl eventually turned out to be too limited.

The ability to limit ars_GetWhatever() attributes is something which 
I've wanted myself sometimes, so this has a relatively high priority for 
me, at least concerning fields. The performance of ars_GetFieldTable, 
which is also used to populate the internal field cache (necessary to 
build the ARS API data structures for ars_CreateEntry/ars_SetEntry 
calls) would probably be much better if it used ARGetMultipleEntries. 
I'm currently working on this, so it will be definitely  implemented in 
the next release.


Thilo Stapff


Carey Matthew Black wrote:
> Franklin Lee,
> 
> Note: This post may sound "negative" towards ARSPerl. It is not
> intended to be. My understanding of ARSPerl's reach and range may be
> limited as I have not seriously used it for some time now. ( FWIW: I
> have moved on to the Java API. ) I do still use it some, for the tasks
> that it is "best suited" for, but I have often found limits in my
> abilities to use the wrapper to do "complex tasks" with ARSystem.
> 
> 
> In general, I have often found that people that I will call "true
> programmers" look at the ARS api and are left scratching their heads
> over the choices that were made when the api was being laid out.
> 
> To be clear, what you think of as "inefficient" may not be as bad as
> you think. (And there maybe options that ARSPerl simply does not yet
> implemented, or exposed to it's users too.)
> 
> FWIW: The C and Java api's support a great deal of granularity as to
> the level of details that you can get about the objects in the get*
> api calls. So you do not have to get all of the field details when all
> you want is the "fOption" settings for all of the fields. Yes you do
> have to make a trip to the server for every field. However that is
> simply because there are no advantages for the vendor (Remedy, and now
> BMC Remedy) to have a single API call that returns that specific range
> of details for all fields on a single Form or even "All Forms on a
> server" for that matter.
> 
> I am however, unclear if the ARSPerl wrapper around the C API offers
> the ability to limit the details that will be fetched for the
> ars_GetField call. (It looks like there are no inputs to achieve that
> goal.) For that matter I can not tell if ARSPerl has implemented the
> ARGetMultipleFields API call either. The published HTML docs do not
> appear to reference theARGetMultipleFields function specifically. In
> fact the HTML docs give the impression that ars_GetFieldTable
> specifically uses "ars_GetListField and ars_GetField". But I must add
> that it is possible that the ARSPerl wrapper does include a way to
> call the underpinning C ARGetMultipleFields API and it may not be
> documented yet too.
> 
> You may also find that getting all details about a form will produce
> the data set you need. However, you may need to walk the data returned
> in ways that are not provided by the ARS API too.
> 
> The AR System is a 3 tiered system. Client, Server, and RDBMS. The
> vendor has made decisions about that tasks will be done by each of
> those layers for their own reasons. (And there is no written
> explanation that I have ever come across.)
> 
> Often programmers expect the Server (ALA: ARS API ) to do things that
> I believe were deemed to be the responsibility of the client layer.
> (There are many examples, not the least common of which has to do with
> desires to programmaticly dissect, construct, or manipulate ARS
> objects in mass. Which are generally not implemented in the provided
> clients. Even when they are simulated in the provided clients I
> greatly suspect they are simply looping over the objects selected and
> calling multiple single get/set/create API calls for each one.)
> However, over they years as the AR System application reach and range
> improved the ARGetMultiple* API calls were added to help with some
> (not all) of these needs that the vendor started to face for their own
> clients functionality.
> 
> Please keep in mind that while the AR System API is expose to the
> customer that I have long believed that its design and purpose is very
> vendor centric. The gaps may be there simply because the vendor does
> not have the same needs, or they might be there to intentionally leave
> gaps that make it harder for customers to totally replace the vendors
> clients. ( You can reach either conclusion easily and likely can find
> "evidence" to support both positions fairly easily.)
> 
> But long story short...
> 
> So as a wise teacher often says.... The rest is left to the student
> (er.. Client in this case) to implement.
> 
> If you speak Java, you should will find the Java API to be more
> complete. (and in theory, "supported" directly by the vendor.)
> 
> I hope some of that helps.
> 


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/


--
Arsperl-users mailing list
Arsperl-users@arsperl.org
https://lists.sourceforge.net/lists/listinfo/arsperl-users

Reply via email to