发的邮件是文本格式,只有标题  实现通知功能

本例子是在请假申请环节流转后向总经理发邮件 如图:

1. 用附件中的mail.jar替换runtime\BusinessServer\WEB-INF\lib里面的mail.jar

2. 将附件中的MailSenderInfo.java MyAuthenticator.java SimpleMailSender.java三个文件(发邮件用)复制到流程目录下的dsrc目录下

3. 在请假申请环节的onAfterAdvance事件中获取信息发邮件  代码如下:

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.justep.system.opm.api.Person;
import com.justep.system.process.*;
import com.justep.system.opm.api.PersonHelper;
public class EmailProcess {
public static void businessActivity1AfterAdvance() {
String email = null;
String title = null;
String personName = null;
Date date = new Date();
List exts = new ArrayList();
exts.add("sMail");
String personID = null;
for (ActivityInstance ai : ProcessUtils.getAI().getAllNextAIs()) {
if (ai.getNextAIs().isEmpty()) {
for (Task t : ai.getTask().getExecutorTasks()) {
title = t.getName();
Person person=PersonHelper.loadPerson(t.getExecutorPersonID(), exts);
personName=person.getName();
email=(String) person.getExtValue("sMail");
//这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");//发送者邮箱的host
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("*********@163.com");//发送者邮箱名
mailInfo.setPassword("*********");//发送者的邮箱密码
mailInfo.setFromAddress("********@163.com");// 发送者邮箱地址
mailInfo.setToAddress(email);//接收者的邮箱地址
mailInfo.setSubject(personName + "   " + title + "   " + (new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(date));
mailInfo.setContent(" ");//这里邮件内容为空
//这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
sms.sendTextMail(mailInfo);//发送文体格式
}
}
}
}
}

Desktop.zip

发送html格式邮件,可以通过点击链接去处理审批

这个邮件的格式是html的,接收到的邮件里面有个超链接,通过点击链接登陆到平台去处理审批过程:

点击链接,链接指向login.j文件 在login.j文件实现登陆  然后重定向到publicActivity.w文件   在publicActivity.w中的windowFrame组件上显示代办任务的页面

1. 将请假申请环节的onAfterAdvance事件中的代码替换为:

        import java.io.UnsupportedEncodingException;
	import java.net.URLEncoder;
	import java.text.SimpleDateFormat;
	import java.util.ArrayList;
	import java.util.Collection;
	import java.util.Date;
	import java.util.HashSet;
	import java.util.List;
	import java.util.Set;

	import com.justep.model.ModelUtils;
	import com.justep.system.process.*;
	import com.justep.system.context.*;
	import com.justep.system.opm.*;
	import com.justep.system.opm.api.PersonHelper;
	import com.justep.util.Utils;

	public class EmailProcess {
	        public static void businessActivity1AfterAdvance() {
	               String email = null;
	               String title = null;
                       String userName = null;
	               String password = null;
	               String url = null;
	               String task = null;
	               String eUrl = null;
	               String process = null;
	               String activity = null;
	               String executor = null;
	               String personName = ContextHelper.getPerson().getName();
	               Date date = new Date();
	               Collection extOrgRelations = new ArrayList();
	               extOrgRelations.add("sMail");
	               String personID = null;
	               for (ActivityInstance ai : ProcessUtils.getAI().getAllNextAIs()) {
	                       if (ai.getNextAIs().isEmpty()) {
	                               for (Task t : ai.getTask().getExecutorTasks()) {
	                                       title = t.getName();
	                                       task = t.getId();
	                                       eUrl = t.getEURL();
	                                       process = t.getProcess();
	                                       activity = t.getActivity();
	                                       executor = t.getExecutorFID();
	                                      personID=OrgUtils.getPersonIDByFID(t.getExecutorFID());
	                                       email = (String) PersonHelper.loadPerson(personID, extOrgRelations).getExtValue("sMail");
	                                       userName = PersonHelper.loadPerson(personID, extOrgRelations).getCode();
	                                       password = PersonHelper.loadPerson(personID, extOrgRelations).getPassword();
	                                       url = "http://192.168.1.58:8080/x5/UI/demo/actions/process/integration/login.j?username=" + userName + "&password=" + password
	                                       + "&task=" + task + "&eUrl=" + eUrl + "&process=" + process + "&activity=" + activity + "&executor=" + executor + "";
	                                  //这个类主要是设置邮件
	                                    MailSenderInfo mailInfo = new MailSenderInfo();
	                                    mailInfo.setMailServerHost("smtp.126.com");//发送者邮箱的host
	                                    mailInfo.setMailServerPort("25");
	                                    mailInfo.setValidate(true);
	                                    mailInfo.setUserName("song_ning_ning@126.com");
	                                    mailInfo.setPassword("SONGNINGNING0327");//您的邮箱密码
	                                    mailInfo.setFromAddress("song_ning_ning@126.com");
	                                    mailInfo.setToAddress(email);
	                                    mailInfo.setSubject(personName + "   " + title + "   " + (new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(date));
	                                    mailInfo.setContent("<a href=" + url + ">请点击此链接去处理</a>");
	                              //这个类主要来发送邮件
	                             SimpleMailSender sms = new SimpleMailSender();
	                              sms.sendHtmlMail(mailInfo);//发送html格式
	                         }
	                 }
	        }
	     }
	}

2. 在UI/demo/actions/process/integration下新建login.j文件 实现登陆功能 代码如下:

        import java.io.IOException;
	import java.sql.Date;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	import org.json.JSONException;
	import org.json.JSONObject;
	import com.justep.biz.client.ActionEngine;
	import com.justep.biz.client.ActionResult;
	import com.justep.biz.client.ActionUtils;
	public class Login extends com.justep.ui.impl.JProcessorImpl  {

	   @Override
	   public void execute(HttpServletRequest request, HttpServletResponse response)
	          throws ServletException, IOException {
	          JSONObject content = null;
	          String bsessionid = request.getParameter("bsessionid");
	          String username = null;
	          String password = null;
	          String task=null;
	          String eUrl=null;
	          String process=null;
	          String activity=null;
	          String executor=null;
	          ActionResult checkResult = ActionEngine.checkSession(bsessionid, ActionUtils.JSON_CONTENT_TYPE);
	          if (checkResult.isSessionTimeOut()) {
                  username = request.getParameter("username");
	          password = request.getParameter("password");
	          task=request.getParameter("task");
                  eUrl=request.getParameter("eUrl");
	          process=request.getParameter("process");
                  activity=request.getParameter("activity");
                  executor=request.getParameter("executor");
	          String ip = request.getRemoteAddr();
	          String language = "zh_CN";
	          Date loginDate = new Date(System.currentTimeMillis());
	          ActionResult actionResult = ActionEngine.login2(username, password, ip, language, loginDate, null, ActionUtils.JSON_CONTENT_TYPE, null);;
	          content = (JSONObject)actionResult.getContent();
	          bsessionid = actionResult.getBSessionID();
	          } else {
	          content = (JSONObject)checkResult.getContent();
	           }

	       try {
	            content.put("bsessionid", bsessionid);
	      } catch (JSONException e) {
	                  e.printStackTrace();
	      }
	     response.setCharacterEncoding("UTF-8");</li>
	          String url="http://192.168.1.58:8080/x5/Test/email/process/email/publicActivity.w?eUrl="+eUrl+"&amp;task="+task+"&amp;activity-pattern=do&amp;process="+process+"&amp;activity="+activity+"&amp;$log=1&amp;bsessionid="+bsessionid+"&amp;executor="+executor+"&amp;language=zh_CN";
	      response.sendRedirect(url);
	  }

	}

3. 在UI/Test/email/process/email(对于本例子的路径)下新建publicActivity.w文件 在.w文件增加组件windowFrame 并设置高和宽为100%  区别在外部打开的代办还是在平台内部打开的代办  方便注销用户

在model的onload事件中写如下代码:

        publicActivity.model1Load = function(event){
        var eUrl=justep.Request.URLParams['eUrl'];
        var task=justep.Request.URLParams['task'];
        var process=justep.Request.URLParams['process'];
        var activity=justep.Request.URLParams['activity'];
        var bsessionid=justep.Request.URLParams['bsessionid'];
        var executor=justep.Request.URLParams['executor'];
        var url="http://192.168.1.58:8080/x5"+eUrl+"?task="+task+"&amp;activity-pattern=do&amp;process="+process+"&amp;activity="+activity+"&amp;$log=1&amp;bsessionid="+bsessionid+"&amp;executor="+executor+"&amp;language=zh_CN";
        var windowFrame=justep.xbl('windowFrame1');
        windowFrame.open("待办任务",url);
	};

4. 在punlicActivity.js 文件中加入以下代码:实现处理完结果后关闭页面注销当前用户

        window.onbeforeunload = function(){
        var bsessionid=justep.Request.URLParams['bsessionid'];</li>
        var flag=justep.Request.URLParams['flag'];
        $.ajax({
            async: false,
	    type: 'POST',
	    dataType: 'json',
	    url: 'http://192.168.1.58:8080/x5/UI/demo/actions/process/integration/x5Logout.j?bsessionid='  + bsessionid,
            data: {},
	     error: function(error, status, text) {
	               alert('注销失败:' + text);
                          },
	                  success: function(result){
	                      if (result.flag) {
	                           alert("X5注销成功!");
	                                } else {
                                       alert('注销失败:' + result.message);
	                               };
	                            }
	                            });
	}

本文由WeX5君整理,WeX5一款开源免费的html5开发工具H5 App开发就用WeX5!

阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443