Quintiq file version 2.0
|
#parent: #root
|
StaticMethod CreatePeriodTaskOperationMessage (
|
MacroPlan macroplan
|
)
|
{
|
Description: 'Create sanity check message for blending'
|
TextBody:
|
[*
|
// Get the limit for number of sanity check messages
|
messagelimit := macroplan.GlobalParameters_MP().SanityCheckLimit();
|
|
// Get FulfillmentTargets that has sanity check violation(s)
|
invalidobjects := selectsortedset( macroplan,
|
SanityCheckGroup.astype( SanityCheckGroupFulfillmentTarget ).InvalidFulfillmentTarget,
|
invalidobject,
|
true,
|
invalidobject.SanityCheckFulfillmentTargetMostSevere() );
|
|
objcount := 0;
|
// Traverse the set of FulfillmentTargets and create sanity check message
|
// as long as the number of FulfillmentTargets processed doesn't exceed the limit of number of messages
|
traverse( invalidobjects,
|
Elements,
|
invalidobject,
|
objcount <= messagelimit )
|
{
|
objcount := objcount + 1;
|
|
feedbacks := construct( Strings );
|
sanitycheckfeedbacks := construct( Strings );
|
|
// Get sanity check violation messages and categories
|
invalidobject.DoSanityCheckGroupFulfillmentTarget( feedbacks, sanitycheckfeedbacks );
|
|
i := 0;
|
// Traverse each sanity check violation categories
|
traverse( sanitycheckfeedbacks,
|
Elements,
|
scfb )
|
{
|
// Check if there're any SanityCheckMessageFulfillmentTarget with the same description, if there's none, create one
|
if( not exists( invalidobject, SanityCheckMessageFulfillmentTarget, msg, msg.Description() = scfb ) )
|
{
|
//tokenize msg to retrieve category level and seperate the actual feedback
|
sanitycheckmessage := SanityCheckMessageFulfillmentTarget::Create( invalidobject.SanityCheckGroupFulfillmentTarget(),
|
feedbacks.Element( i ),
|
true,
|
scfb );
|
sanitycheckmessage.FulfillmentTarget( relset, invalidobject );
|
}
|
i := i + 1;
|
}
|
}
|
*]
|
}
|