我们一直致力于使用ProcessMaker实现一些业务流程。我们一直在观察有关通过ProcessMaker发送电子邮件的附件的问题。
以下是详细问题。
我们有一个计时器任务,它会向业务用户发送一些电子邮件,其中包含由PM生成的一些附件。但我们一直在观察电子邮件有时会被发送而没有附件,但有时电子邮件包含附件。
为了解决问题,我们在发送电子邮件之前检查了每个步骤,但我们发现附件文件在发送电子邮件之前已存在。
在任何流程中,带附件的电子邮件发送都非常有效。但对于计时器任务,有时电子邮件会在没有附件的情况下发送,有时会发送电子邮件而不附加。
以下是在触发计时器任务时执行的代码块。
@%emailCounter++;
try{
$to = 'xxxx@gmail.com';
$caseId = @@APPLICATION;
$aAttachments = [];
@@debugStr = "";
@@fileQuery = "select `APP_DOC_UID`, `DOC_VERSION` FROM `APP_DOCUMENT` where `APP_UID`='$caseId' order by `DOC_VERSION` desc limit 1";
$aFiles = executeQuery(@@fileQuery);
@@debugStr .= ";<br/> File counts = ".count($aFiles);
foreach ($aFiles as $aFile)
{
@@debugStr .= ";<br/> File = ".$aFile['APP_DOC_UID'];
$oDoc = new AppDocument();
$aDocInfo = $oDoc->Load($aFile['APP_DOC_UID'], $aFile['DOC_VERSION']);
@@debugStr .= ";<br/> File Info = ".json_encode($aDocInfo);
$ext = '.pdf'; //set to '.doc' if sending a DOC file
$g = new G();
$pathToFile = PATH_DOCUMENT . $g->getPathFromUID(@@APPLICATION) . PATH_SEP . 'outdocs' . PATH_SEP . $aFile['APP_DOC_UID'] . '_' . $aDocInfo['DOC_VERSION'] . $ext;
@@debugStr .= ";<br/> File path = ".$pathToFile;
$filename = @@selfNamePDF;
$aAttachments = PMFAddAttachmentToArray($aAttachments, $filename, $pathToFile);
}
@@subjectLine = '[Test - attachment] '.@@title;
PMFSendMessage(@@APPLICATION, 'yyyy@zzz.com', $to , 'pppp@gmail.com','' , @@subjectLine, 'TestEmail.html', array(), $aAttachments);
} catch (Exception $e) {
PMFSendMessage(@@APPLICATION, 'yyyy@zzz.com', $to , 'mmmm@gmail.com','' , 'Exception Occured - '.$e->getMessage(), 'TestEmail.html', array(), $aAttachments);
}
寻找我们可以考虑摆脱这个问题的方向。