We have an example link that shows a report generated from otml data.
But I don't want to post this link to this list because it has real
student names in it.

I can document how the report works.  The approach used still needs to
be worked on, but it does work.  It is being used in the CAPA project to
get reports or real learner data.

-------

A "view" link from the sds is used to launch a jnlp.

The sailotrunk.otmlurl is set to a special report otml file:

For example:
http://continuum.concord.org/otrunk/examples/UDL/udl-friction-34-report.otml 


This file includes the original activity otml file and a otml file
generated by the DIY:
<includes>
   <OTInclude href="udl-friction-34.otml"/>
   <OTInclude
href="http://udldiy.concord.org/external_otrunk_activities/9/ot_learner_data.xml"/>
</includes>

The generated otml file defines a OTUserList object that contains
references to the learner data files for all the users that have run
that activity.
So in this case it is all the users that have run
"external_otrunk_activities/9"

The OTUserList is referenced in the report otml by first assigning it to
a local_id.  The top level object of the original activity is also assigned
a local_id:

<idMap>
<idMapping local_id="section_card_container"
id="678b5190-0bcf-012a-b542-0017f2cc694e!/section-card-container"/>
<idMapping local_id="user_list"
id="7a9876a6-e64c-11dc-bee7-001b631eb2da!/user_list"/>
</idMap>

The report otml has an object and view for OTMultiUserRoot:
<OTMultiUserRoot local_id="multi_user_root" userList="${user_list}">
     <reportTemplate>
         <OTUDLReport local_id="report">
            <sectionContainer>
              <object refid="${section_card_container}"/>
            </sectionContainer>
         </OTUDLReport>
     </reportTemplate>
</OTMultiUserRoot>

The OTMultiUserRootView loads in all the databases listed in the
userList object.
Then it displays the view for the reportTemplate object.
In this case that is the OTUDLReportView.

The OTUDLReportView makes the custom report for UDL activities.  The
otrunk apis that it uses to build
the report are:

// get the list of loaded in users
OTUserListService userListService = (OTUserListService)
getViewService(OTUserListService.class);
Vector users = userListService.getUserList();

// get a user's version of a particular authored object
OTObject userObject =  otrunk.getUserRuntimeObject(authoredObject, user);

So in the current OTUDLReportView it is figures out if a student has
viewed a section of the unit (in udl the thing a student runs is a unit,
which consists of sections).
Then it displays a checkmark in a table if they have.

You can see the full otml source by curling the url above and then
curling its included otml files.
You can see the source for the OTMultiUserRoot inside of the otrunk project.
You can see the source for the OTUDLReportView inside of the otrunk-udl
project.

You can see another style of OTrunk report that in the otrunk-capa project:
org.concord.otrunkcapa.OTCAPAReportTemplateView
This one uses a script to generate the report.   I'm not sure where some
example scripts are, I would guess otrunk-examples.

Scott






--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SAIL-Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/SAIL-Dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to