This is article is based on a customer need to display workflow buttons in a an ASP page that handles company records.
Below you can see that I have created a partial rebuild of the company summary screen.
Since this example is based on the Company Summary screen there are a few steps that must be completed before any code is carried out.
- Make sure that you have workflow enabled for the Company Entity.
- Make sure the workflow for the company is activated.
The code is quite straight forward.
Note: I have only written below the core code of the page. I hope the comments in the code are self-explanatory. The important thing to realise is that Workflow buttons can only be added to a screen (entrygroup) block that has been deliberately 'executed' with the record passed into the execute method.
<%
//Block Create
var myCompanyBlock = CRM.GetBlock("companyboxlong");
with(myCompanyBlock)
{
Title = CRM.GetTrans("Tabnames","company");
//Workflow Properties - Edit View
//Set Block to use workflow properties
//This will only work when entrygroup block uses record object as execute method parameter.
if (CRM.Mode != Edit)
{
//Buttons only shown in View mode
WorkflowTable = "Company";
//show the "new" buttons for workflow.
ShowWorkflowButtons = true;
}
}
var myPersonBlock = CRM.GetBlock("personboxshort");
with(myPersonBlock)
{
Title = CRM.GetTrans("Tabnames","person");
DisplayForm = false;
DisplayButton(Button_Default) = false;
}
//Get Context Info
var intRecordId = CRM.GetContextInfo("company","comp_companyid");
//Record Find using ContextInfo
//Retrieve Record
var myRecord = CRM.FindRecord("company,vsummarycompany","comp_companyid="+intRecordId);
//Block to Web - Preferred
//Arg is either Argument (whereclause) or Record object depending on block type used.
//Remove Arg if no parameter is being passed.
CRM.AddContent(myCompanyBlock.Execute(myRecord));
if (CRM.Mode != Edit)
{
CRM.AddContent(myPersonBlock.Execute(myRecord));
}
//use default tab group - ensure any CRM.GetTabs() is commented out
Response.Write(CRM.GetPage());
//specify a tab group
//Response.Write(CRM.GetPage("TabGroupName"));
%>