SCORM multiple rollup action - scorm

How do I specify a multiple roll up action for example. Based on success status of any one SCO I want the overall status of the course to be satisfied and similarly based on the completion status of any of the SCO, I want the completion status of the overall course to be completed. I tried doing it by specifying 2 rollup rules but testing on scorm.com is not giving the expected result. Any clues?
<imsss:rollupRules objectiveMeasureWeight="1">
<imsss:rollupRule childActivitySet="any">
<imsss:rollupConditions conditionCombination="any">
<imsss:rollupCondition operator="noOp" condition="completed" />
</imsss:rollupConditions>
<imsss:rollupAction action="completed" />
</imsss:rollupRule>
<imsss:rollupRule childActivitySet="any">
<imsss:rollupConditions conditionCombination="any">
<imsss:rollupCondition operator="noOp" condition="satisfied" />
</imsss:rollupConditions>
<imsss:rollupAction action="satisfied" />
</imsss:rollupRule>
</imsss:rollupRules>
This is what I have set but this doesnot seem to work. Can somebody point out whats wrong?

To clarify, do you mean that the status of one particular SCO controls the rolled up status? Or, do you mean that if any SCO achieves a status then the parent should also attain that status?
If it is the former, you want to just mark all of the other SCOs as not contributing to rollup. See the Post Test Rollup golf example.
If it is the later, then you will want a rollup rule on the parent that says "if any completed/satisfied then completed/satisfied".
You are on the right track by having two separate rollup rules for the separate status rollups. In fact, you need a separate rollup rule for each individual status...i.e. a rule for incomplete, a rule for completed, a rule for satisfied and a rule for not satisfied.

Related

Why a validity condition seems to be ignored on ReqLineItem.SupplierPartNumber?

For customization shown below, when editing the line item, validity is never triggered and its error message is not shown. I can even back out from the line item to editing of requisition header by pressing OK button (and thus saving changes) what should be blocked.
<inClass name="ariba.purchasing.core.ReqLineItem">
<inField name="SupplierPartNumber">
<validity combine="and">
<context enclosingDocument="ariba.purchasing.core.Requisition"/>
<condition expression="false">
<parameter name="Message" value="Temporarily, this validity is always NOT valid."/>
</condition>
</validity>
</inField>
</inClass>
However, the expected error message is shown on header level, when I press Submit button or Show Approval Flow button.
How can I make validity to work normally on the line item?
Set validity condition at value source instead.
ReqLineItem.SupplierPartNumber is actually an alias for LineItemDescription.SupplierPartNumber. Although its visibility and editability conditions can be controlled separately, its validity condition is transferred from the originating field. This is logical, because when the content is shared via alias, it still has to keep the same validity rules.
The answer:
implement validity condition at originating field LineItemDescription.SupplierPartNumber, it also applies to its aliases
do not use validity condition at aliased ReqLineItem.SupplierPartNumber. The usage is technically possible without getting an error but it actually leads to somewhat unexpected behavior described above.

Can multiple requests update a single environment variable in Paw?

I have a variable named primary_address_id which can be set or updated via several API requests. For example, I may call AddAddress and specify that the new address should be the primary, or I can call MakePrimaryAddress to set an existing address as the primary.
I'm coming from Postman where I have tests defined for each of these API endpoints to update primary_address_id -- simple. But I can't find a way to do this in Paw; it seems I have to set the value to the response of just a single request. Am I missing something obvious? Or is this feature planned for a future release?
A workaround is to set the value of primary_address_id to the response from GetPrimaryAddress, but that means if I'm adding or updating an address I have to make a second call just to update my environment (which I may forget to do). If I could trigger GetPrimaryAddress to run after the Add/Update/List/etc endpoints that would be an acceptable workaround, but I shouldn't need to manually make two separate requests to accomplish this.
It sounds like you will need to make two subsequent requests but you can make groups of requests that will execute in sequence from one command.
Right click the request list and click "New Group" then within that group you can make a sequence of requests that will update your desired environment variable each time.
Create a new group of requests
To run a group of requests click on the group name; in this case "Address" and then click "Send Requests"
Execute group of requests in sequence
Hope this helps.

Paypal sandbox negative testing not working

I have set up negative testing for an account then set the error code desired as the Transaction Amount Field for example 106.06 to invoke error code 10606 "Buyer cannot pay” no errors are returned the order is processed.
If I try another error code 10539 “This transaction cannot be processed”. An error is return and the order is not processed.
I am using the The US site error codes: http://www.paypalobjects.com/en_US/ebook/PP_APIReference/Appx-ErrorCodes_and_Messages.html and we are in Australia are these the correct error codes?
Any ideas what is causing this? Is this the correct way to use Negative Testing in the sandbox?
Thanks
I know this is late but I stumbled across the answer for me.
You didn't specify the API Name you are working with DoExpressCheckoutPayment and according to Paypal's Negative Testing Docs we are supposed to use an AMT field and
To trigger an error condition on an amount-related field, specify a error code value as a number with two digits to the right of the decimal point. For example, specify a value of 107.55 to trigger the 10755 error.
I found their information to be completely false! What I finally got working was to use PAYMENTREQUEST_0_AMT and NOT use a decimal.
So here is what I came up with
USER={yourUID}&
PWD={yourPSWD}&
SIGNATURE={yourSig}&
TOKEN={yourToken}&
METHOD=DoExpressCheckoutPayment&
VERSION=119&
PAYMENTREQUEST_0_AMT=10486
Edit:
I later found a better option specifically for the Payment Method Refused (10486) that I mentioned above. Take a look: https://developer.paypal.com/docs/classic/express-checkout/ht_ec_fundingfailure10486/#testing-saleorauth

SCORM 1.2 API calls to set the grade in gradebook

What javascript API calls are needed to set the grade after completing an activity? Now I have these three calls:
LMSSetValue("cmi.core.score.min", 0);
LMSSetValue("cmi.core.score.max", 100);
LMSSetValue("cmi.core.score.raw", score);
I also set the status to completed:
LMSSetValue("cmi.core.lesson_status", "completed");
When I complete the activity as a student, sometimes I can see icon which tells that
activity is completed ("1 attempt(s)"), sometimes not. The gained score is never there.
Desire2Learn is at version 10.1
Not a SCORM expert by any means, but someone here that knows more about it than me makes these points:
You also need to call Commit and Terminate and/or LMSFinish; you can find some good technical resources to help developers at the SCORM website, in case you don't already know about them.
To verify scores and status getting to the Learning Environment, you can check the SCORM reports in the Web UI (Content > Table of Contents > View Report), which is the standard place to view SCORM results.
If scores are set there, you can get them into the grade book in two ways:
You can preview the content topic as an instructor: below the topic view, you'll find a spot to associate a grade item with the topic.
If the DOME configuration variable d2l.Tools.Content.AllowAutoSCORMGradeItem is on for the course, that should automatically create a grade item for that SCORM content object.
As Viktor says, you must invoked LMSCommit after using LMSSetValue, or else the data will not be persisted ('saved') in the LMS.
LMSSetValue("cmi.core.score.min", 0);
LMSSetValue("cmi.core.score.max", 100);
LMSSetValue("cmi.core.score.raw", score);
LMSSetValue("cmi.core.lesson_status", "completed");
LMSCommit(); //save in database
LMSFinish(); //exit course
Note that "LMSSetValue" is not an official SCORM call, it means you're working with a SCORM wrapper of some kind. Therefore where I say LMSCommit and LMSFinish, you might actually need to use different syntax -- I'm just guessing about the function names. Check your SCORM wrapper's documentation. The point is that you need to commit (save) and terminate (finish).

Applying more than one sort on a Tridion broker query

I have a broker query where I need to sort by 2 different fields (using JSP and 2011 SP1)
The API has the method "addSorting" which I am applying.
It appears, however, that the second addSorting call is overwriting the first addSorting call - rather than adding the second sort:
// Sort by Date
CustomMetaKeyColumn customMetaKeyColumnDate = new CustomMetaKeyColumn("date", MetadataType.DATE);
query.addSorting(new SortParameter(customMetaKeyColumnDate, SortParameter.DESCENDING));
// Sort by Owner
CustomMetaKeyColumn customMetaKeyColumnOwner = new CustomMetaKeyColumn("owner", MetadataType.STRING);
query.addSorting(new SortParameter(customMetaKeyColumnOwner, SortParameter.ASCENDING));
They sorts work fine individually.
Is this expected? Is addSorting really a setSorting - where only 1 sort can be specified or am I missing a way to combine 2 sorts?
The addSorting method works just fine. However, it simply does not work for CustomMeta columns!!! There is already a confirmed defect regarding this subject with the following summary: "SortParameter does not work with two metadata fields". This is still an open defect for 2011SP1 and is scheduled to be fixed only for the next release.
Cheers,
Daniel.

Resources