Thanks for your helpfui responses, Tim. I left responding for a while in case anyone else wanted to contribute to the discussion, but I had not meant to leave it quite this long.
My feeling about your second suggestions is that it seems to be contrary to the way in which LTI services have defined as sub-plugins which can be automatically discovered and offered to tool providers. Your first suggestion has the disadvantage of requiring an additional install which, to me, is not ideal. It would be nice for a service to be self-contained within a single sub-plugin.
I have, however, heeded your advice about not abusing the content of the grade_items table. My current proposal is to create the lineitems as manual items. This involves a couple of database changes:
1. The lti_submissions table has two new fields: courseid and gradeitemid which allow a submission to be associated with a grade item since this is no longer possible via the LTI instance ID. The course ID is useful when a grade item has been deleted.
2. A new table named ltiservice_outcomes2 is created with the following fields:
- id (auto number)
- toolproxyid
- gradeitemid
- activityid
This table allows grade items created by the service to be associated with a tooi proxy and as a place to record any activity IDs defined by the tool provider. At present I have not added any referential inegrity constraints so records will remain in this table after a tool proxy or grade item has been deleted. Would a maintenance script to tidy up this table be sensible?
Does this sound like an acceptable solution or should I be revisiting one of the other suggestions?