package com.tenwa.flow.action.comm; import com.amarsoft.awe.util.JavaMethod; import com.amarsoft.context.ASUser; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.stereotype.Controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; @Controller public class FlowController extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { this.doGet(request, response); } /** * 共需要传递几个基础参数 * ClassName: 用于查找需要执行的startAction * Args内必须提供参数 * ApplyType: 用于查找哪个流程 * @return */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType( "text/html; charset=GBK" ); response.setHeader( "Cache-Control", "no-store" ); response.setHeader( "Pragma", "no-cache" ); response.setDateHeader( "Expires", 0L ); response.setCharacterEncoding( "utf-8" ); PrintWriter out = response.getWriter(); Map result = new HashMap<>(); String sClassName = request.getParameter( "ClassName" ); //发起流程固定initFLow String sMethodName = "interfaceInitFlow"; String sArgs = request.getParameter( "Args" ); try { if ( sArgs == null ) { sArgs = ""; } else { if ( sArgs.indexOf( "CurUserID" ) == -1 ) { sArgs += ",CurUserID=8006U00000001"; } sArgs = URLDecoder.decode(sArgs, "UTF-8").replace("Ж", "+").replace("ё", "%"); } ASUser CurUser = ASUser.getUser( "8006U00000001", null ); String sResult = JavaMethod.runTrans( sClassName, sMethodName, sArgs, CurUser ).getReturnText(); if ( sResult.indexOf( "success" ) == -1 ) { throw new Exception( "发起流程失败" ); } result.put( "data", sResult.split( "@" )[ 1 ] ); result.put( "status", "success" ); } catch ( Exception e ) { e.printStackTrace(); result.put( "status", "error" ); } ObjectMapper objectMapper = new ObjectMapper(); out.print( objectMapper.writeValueAsString( result ) ); out.flush(); out.close(); } }