GetStatusDisplay()
This code sample describes how to retrieve the information that is displayed when a workflow participant clicks the step name on the Step List page. The Step List page is accessed by clicking the Step List tab on the Detailed Status page for a workflow.
function Assoc GetStatusDisplay( \
Object prgCtx, \
Dynamic context, \
Dynamic data = Undefined )
Assoc a
Assoc retVal
Assoc tabPaneInfo
Assoc tmp
Integer whichTab
RecArray auditInfo
RecArray disposition
RecArray performer
String title
Record mapRec = context.MAP_PAINTER
Record step = context
whichTab = ( RecArray.IsColumn( data, 'PaneIndex' ) ) ? \
Str.StringToInteger( data.PaneIndex ) : 1
//Populate the tmp Assoc with Label, URL, HelpKey, and Active
//values. The Label value specifies the name of the tab that you
//are preparing for display (General). The URL value identifies
//the page to display on the General tab. The HelpKey value
//specifies the help page to display for this step type. If set
//to TRUE, the Active value indicates that the tab is the active
//tab (currently displayed). If set to FALSE, the Active value
//specifies that the General tab is not the active tab and must
//be called for display.
tmp.Label = [WebWork_HTMLLabel.General]
tmp.URL = $WebWork.WFPkg.SetPaneIndexArg( \
$WebDSP.HTMLPkg.ArgsToURL( data ), 1 )
tmp.HelpKey = 'User' // do not XLATE
tmp.Active = FALSE
//Store the tmp Assoc in a list and assign it to
//tabPaneInfo.TabList.
tabPaneInfo.TabList = { tmp }
a.Gif = '16user.gif'
//Determine whether the workflow participant can reassign the
//step by checking permissions.
a.CanReassign = $WFMain.WAPIPkg.CheckWFPermissions( \
prgCtx, step, $WFMain.WFConst.kWFChangeWork )
//Retrieve the disposition data for the step.
disposition = $WFMain.WAPIPkg.GetDispositionData( \
prgCtx, step.SUBWORKTASK_SUBWORKID, step.SUBWORKTASK_TASKID )
//If a disposition was specified for this step, add it to the
//Assoc of data that is passed to the HTML file so that it can be
//displayed.
if ( IsDefined( disposition ) && Length( disposition ) )
a.Disposition = Str.Quote( $LLIAPI.FormatPkg.ValToString( \
disposition[ 1 ].VALUE ), '"' )
end
if ( IsDefined( step.SUBWORKTASK_PERFORMERID ) )
performer = UAPI.GetByID( prgCtx.USession().fSession, \
step.SUBWORKTASK_PERFORMERID )
if ( !IsError( performer ) )
a.PerformerName = performer[ 1 ].NAME
if ( performer[ 1 ].TYPE != UAPI.USER )
a.Gif = '16group.gif'
end
end
end
a.WorkRec = step
tmp = Assoc.CreateAssoc()
tmp.ModuleName = 'webwork'
tmp.HTMLFile = 'wwtuser.html'
tmp.Data = a
tabPaneInfo.PaneList = { tmp }
//Retrieve the audit trail, if necessary.
if ( whichTab == 2 )
auditInfo = $WFMain.WAPIPkg.GetAuditRec( \
prgCtx, step.WORK_WORKID, step.SUBWORK_SUBWORKID, \
step.SUBWORKTASK_TASKID )
if ( IsError( auditInfo ) )
auditInfo = Undefined
end
end
//Add the Audit tab to the Step Detail page for this type of
//step.
tmp = Assoc.CreateAssoc()
tmp.Label = [WebWork_HTMLLabel.Audit]
tmp.URL = $WebWork.WFPkg.SetPaneIndexArg( \
$WebDSP.HTMLPkg.ArgsToURL( data ), 2 )
tmp.HelpKey = 'Audit'
tmp.Active = FALSE
tabPaneInfo.TabList = { @tabPaneInfo.TabList, tmp }
tmp = Assoc.CreateAssoc()
tmp.ModuleName = 'webwork'
tmp.HTMLFile = 'audittrail.html'
tmp.Data = auditInfo
tabPaneInfo.PaneList = { @tabPaneInfo.PaneList, tmp }
tmp = .GetPackageStatusData( prgCtx, step, data, tabPaneInfo )
//Set the Active flag for the tab that is currently selected.
if ( tmp.OK )
if ( ( whichTab < 2 ) || ( whichTab > Length( \
tabPaneInfo.TabList ) ) )
whichTab = 1
end
tabPaneInfo.TabList[ whichTab ].Active = TRUE
end
//Set up an Assoc that returns all of the data required by
//Livelink to draw the Step Detail page.
retVal.OK = tmp.OK
retVal.ErrMsg = tmp.ErrMsg
retVal.HTMLFile = "wwt.html"
retVal.ModuleName = 'webwork'
retVal.Tab = whichTab
retVal.TabInfo = tabPaneInfo
retVal.Data = step
//Set the masthead information so that the correct header is
//displayed at the top of the Step Detail page.
retVal.HeaderArgs = $WebWork.WFPkg.GetHeaderTypeArgs( 'STATUS', \
step.SUBWORK_TITLE )
return( retVal )
end