Sitecore工作流程批准/拒绝电子邮件

| 我们正在努力在Sitecore 6.2站点的工作流中实现一些自定义代码。当前,我们的工作流程如下所示: 我们的目标很简单:在“等待批准”步骤中,通过电子邮件向提交者发送其内容修订版本是已批准还是被拒绝,以及审阅者所做的评论。为此,我们在\“ Approve \”和\“ Reject \”步骤下添加了一个操作,如下所示: 尝试编写此代码时遇到两个大问题 似乎没有任何简单的方法来确定选择哪个Command(解决方法是在操作步骤中传递参数,但我宁愿检测选择了哪个)。 我似乎无法在此工作流程状态下获得评论(不过我可以将其作为下一个状态) 对于进一步的上下文,这是我到目前为止的代码:
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);
}
    
已邀请:
        我最终得到了以下代码。我仍然看不到区分命令的好方法,而是实现了两个单独的类(一个用于批准,一个用于拒绝):
public void Process(WorkflowPipelineArgs args)
{
    //all variables get initialized
    string contentPath = args.DataItem.Paths.ContentPath;
    var contentItem = args.DataItem;
    var contentWorkflow = contentItem.Database.WorkflowProvider.GetWorkflow(contentItem);
    var contentHistory = contentWorkflow.GetHistory(contentItem);
    var status = \"Approved\";
    var subject = \"Item approved in workflow: \";
    var message = \"The above item was approved in workflow.\";
    var comments = args.Comments;

    //Get the workflow history so that we can email the last person in that chain.
    if (contentHistory.Length > 0)
    {
        //submitting user (string)
        string lastUser = contentHistory[contentHistory.Length - 1].User;
        var submittingUser = Sitecore.Security.Accounts.User.FromName(lastUser, false);

        //send email however you like (we use postmark, for example)
        //submittingUser.Profile.Email
    }
}
    
        我已经回答了一个非常类似的问题。 基本上,您需要获得“邮件工作流操作”,然后需要进一步扩展它以使用原始发送者的电子邮件。     
        获取命令项本身最简单的方法是ProcessorItem.InnerItem.Parent     
        这将为您提供GUID,用于提交,拒绝等命令。
args.CommandItem.ID 
这将为您提供诸如草稿,已批准等状态的GUID。
args.CommandItem.ParentID
    

要回复问题请先登录注册