Understanding application usage and sharing
Understanding how applications work can be a little tricky, we know, so we have prepared a couple of scenarios to walk you through all the steps a user has to relate to.We will also show you how sharing works and how you can implement support for it in you application.
Scenario: a teacher creates a test in itslearning
Teacher: Adding content to a course
A teacher logs in to itslearning and enters a course. From the add menu he can add a number of different learning tools. He adds a test, creates questions and then activates the test for the students in the course.
Technical description
A teacher accesses "Add learning activity" from within a course - a new learning object instance (with a unique LearningObjectId and LearningObjectInstanceId) of this learning tool is then created in itslearning for this course.
She is directed to the ”Add instance URL” specified by the application developer upon registration of the application.
The 3rd party application requires the teacher to fill a form it with content, for example by creating questions for the students to answer. The application then prompts the teacher to save her work.
The application then typically obtains key information such as course details and the title assigned to the learning object in itslearning. The application retrieves the learning object instance created in itslearning by issuing a REST service call, using values for learningObjectId and instanceId as supplied in the query string of the "Add instance URL".:
[GET] /learningObjects/{learningObjectId}/instances/{instanceId}
Since the learning tool is an application for creating tests, it is not just a passive learning resource but a learning activity (specified by the application developer on the ”add application” page) which requires action from the user/student. Depending on which of the three types of learning activities the test belongs to, an assessment type can be chosen for it. Let's assume this application uses advanced assessment:
The possible assessment types should be fetched via the web service call:
[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/PossibleAssessments
Upon saving, the fields AssessmentId, ActiveToUtc and ActiveFromUtc are set in the learning object instance via new REST service call:
[PUT] /learningObjects/{learningObjectId}/instances/{instanceId}
The application specific data (such as the questions in this example) are stored by the learning tool on the 3rd party provider's application server.
Student: Viewing and interacting
Later that day a student belonging to the course logs in to itslearning and is notified in a task list that a new test has been added to a course she participates in. She clicks on the test, answers the questions and submits the test.
Technical description
The student accesses the test: The student is taken to the ”View instance URL” specified by the application developer, when creating the application. The student will have participate permission allowing her to submit an answer.
Student submits the test: The learning tool can calculate a grade or assessment item based on the assessment chosen earlier. The assessment items are first fetched using the web service call:[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/AssessmentItems
The grade is reported to it’s learning via the web service call:[PUT] /learningObjects/{learningObjectId}/instances/{instanceId}/Reports/{userId}
Teacher: View quiz results in itslearning
The next day the teacher logs in to itslearning again. He browses through the recently submitted answers. The test is automatically assessed, and he goes through the report to see how each of his students has performed.
Technical description
The teacher clicks on the test: She is taken to the ”View instance URL” specified by the application developer. The teacher will have the evaluate permission allowing him to see reports.
The application has implemented functionality to display the students' answers to the teacher and fetches the assessments via a web service call to:
[GET] /learningObjects/{learningObjectId}/instances/{instanceId}/Reports
Teacher: View summary results
Reports from both third-party tools and the built-in itslearning tools are visible in a report visible for the teacher. This allows for a good overview for the teachers when they are grading the learners in a course.
Teacher: Sharing in library
The teacher can now share the test with other teachers on his school, his local authority or the whole itslearning community.
Sharing
The itslearning platform is based around a solution solution where teachers can share content with other users.
Teachers can choose who to share with; users on her/his school, with users on other schools in her/his local authority or with users in the entire itslearning community.
More about sharing
Creating an application that supports sharing may look complicated at first glance, but please take a look at the following example. It is definitely worth to implement support for sharing, as the value of your application will increase a lot! It is really a powerful feature to be able to create content in one place and easily share it in many different courses.
"History, Industrial Revolution" is a test. It contains a lot of questions that are connected to LearningObjectId. Users with Participate permission should be allowed to submit answers. As you can see the title can be different in the various courses for the same content (LearningObjectId). Also the deadline, assessment scale, and when the test is active can vary from instance to instance, ModifyInstance or Modify Permission is required to change these properties.
There is one exception to this scenario. When an element is "Unpublished" in the Library (i.e. only the author and co-authors can see it), then we allow the author and co-authors to edit the element in the Course. This means that when the element in unpublished, we will grant the 'Modify' permission, even though the element is shared to the Library. When the author publishes the element (so it is available to a Organisation, Site or Community), the situation described above is leading again.
Here is a very simplified diagram of what the database structure could be - just to give you some ideas:
When you create data model and business logic for an application that supports sharing, you should be careful when deleting and editing content connected to a LearningObjectId, because it can be shared between many instances. E.g. marking records as deleted instead of physically deleting them and think about sharing scenarios when designing user interface will help.
Important: When a user in itslearning adds an instance into a course which refers to a library instance, the view page for your application will be called - not the add page. This is because content should already be in place. However, if your application depends on some settings on instance level before view page can be shown, feel free to redirect user to an appropriate page. In the example above this may be setting assessment scale to use etc.
Even if you don’t plan to code in c# it is a good idea to download the SDK and take a look at methods and comments in the classes (especially the ones in BasePage.cs)