我们正在为Sitecore 6.2站点的工作流程实现一些自定义代码。我们的工作流程目前如下图所示:
我们的目标很简单:在“等待批准”步骤中,通过电子邮件通知提交者他们的内容修订是否已被批准或拒绝,并附上评论。为了实现这一目标,我们在“批准”和“拒绝”步骤下添加一个操作,如下图所示:
我们在编写此代码时遇到了两个大问题:
- 似乎没有简单的方法来确定选择了哪个命令(解决方法是在操作步骤中传递参数,但我更愿意检测选择了哪个命令)
- 我似乎无法获取此工作流状态中的评论(但我可以在下一个状态中获取它们)
var contentItem = args.DataItem;
var contentDatabase = contentItem.Database;
var contentWorkflow = contentDatabase.WorkflowProvider.GetWorkflow(contentItem);
var contentHistory = contentWorkflow.GetHistory(contentItem);
//Get the workflow history so that we can email the last person in that chain.
if (contentHistory.Length > 0)
{
//contentWorkflow.GetCommands
var status = contentWorkflow.GetState(contentHistory[contentHistory.Length - 1].NewState);
//submitting user (string)
string lastUser = contentHistory[contentHistory.Length - 1].User;
//approve/reject comments
var message = contentHistory[contentHistory.Length - 1].Text;
//sitecore user (so we can get email address)
var submittingUser = sc.Security.Accounts.User.FromName(lastUser, false);
}