87 lines
3.2 KiB
Java
87 lines
3.2 KiB
Java
package com.tenwa.flow.action.comm;
|
|
|
|
import com.amarsoft.awe.util.JavaMethod;
|
|
import com.amarsoft.context.ASUser;
|
|
|
|
import fr.opensagres.xdocreport.core.utils.Base64Utility;
|
|
|
|
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("application/x-www-form-urlencoded;charset=UTF-8");
|
|
response.setHeader( "Cache-Control", "no-store" );
|
|
response.setHeader( "Pragma", "no-cache" );
|
|
response.setDateHeader( "Expires", 0L );
|
|
response.setCharacterEncoding( "UTF-8" );
|
|
PrintWriter out = response.getWriter();
|
|
Map<String, Object> result = new HashMap<>();
|
|
String sClassName = request.getParameter( "ClassName" );
|
|
//发起流程固定initFLow
|
|
String sMethodName = "interfaceInitFlow";
|
|
String curUserID = request.getParameter("CurUserID");
|
|
String sArgs = request.getParameter("Args");
|
|
try {
|
|
if ( sArgs == null ) {
|
|
sArgs = "";
|
|
} else {
|
|
sArgs += getFixedFlowParam( sArgs );
|
|
}
|
|
ASUser CurUser = ASUser.getUser(curUserID, 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();
|
|
}
|
|
|
|
public static String getFixedFlowParam ( String args ) {
|
|
StringBuffer fixedFlowParam = new StringBuffer( "{'" );
|
|
if ( args != null && args.length() > 0 ) {
|
|
String[] argObjects = args.split( "," );
|
|
for ( String obj : argObjects ) {
|
|
if ( fixedFlowParam.length() > 2 ) {
|
|
fixedFlowParam.append( "'@'" );
|
|
}
|
|
fixedFlowParam.append( obj.split( "=" )[0] ).append( "':'" ).append( obj.split( "=" )[1] );
|
|
}
|
|
fixedFlowParam.append( "'}" );
|
|
}
|
|
return ",FixedFlowParam=" + fixedFlowParam.toString();
|
|
}
|
|
}
|