0
我正在開發一個應用程序與YAWL 4.我需要添加一個codelet到自動化任務。我寫了一個java類,並添加它遵循各種教程,但沒有任何工作。 YAWL引擎日誌提供了一個錯誤,但它只是說「錯誤加載codelet x」,沒有任何細節。我檢查了YAWL的默認codelet尋找錯誤,但沒有出現(我只是沒有實現所有的方法,可能是這樣?)。這裏是我的代碼:創建並添加codelet到YAWL
public class PrepareDataTaskCodelet extends AbstractCodelet {
private Connection connection;
private Statement statement;
private PreparedStatement preparedStatement;
private ResultSet resultSet;
private String user;
private String password;
private String getAllAppuser;
private String getAllDocument;
private String getAllRequest;
private String getAllRole;
private String tempQuery;
private Element inData;
private List<YParameter> inParams;
private List<YParameter> outParams;
private boolean cancelled;
public PrepareDataTaskCodelet() {
// TODO Auto-generated constructor stub
super();
connection = null;
statement = null;
preparedStatement = null;
resultSet = null;
user = null;
password = null;
tempQuery = null;
}
private ResultSet getSingleAppuser(String field, String data) throws SQLException{
tempQuery = getAllAppuser + "WHERE " + field + " = " + data;
connection.prepareStatement(tempQuery);
resultSet = preparedStatement.executeQuery();
return resultSet;
}
// controlla se è presente appuser con username e password. ritorna false se non viene trovato alcun appuser, true altrimenti
public boolean checkAppuser(String username, String password) throws SQLException{
tempQuery = getAllAppuser + "WHERE username = " + username + "AND password = " + password;
connection.prepareStatement(tempQuery);
resultSet = preparedStatement.executeQuery();
return (resultSet.first());
}
public void initConnection() throws Exception { // starts connection
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/yawlConnection","root","root"); //default connection values
} finally {}
}
public PrepareDataTaskCodelet(String desc) {
super(desc);
// TODO Auto-generated constructor stub
}
@Override // TODO assegnare paramentri in ingresso (user e pw)
public Element execute(Element inData, List<YParameter> inParams, List<YParameter> outParams)
throws CodeletExecutionException {
// TODO Auto-generated method stub
setInputs(inData, inParams, outParams);
String username = "";
String password = "";
boolean isValidUser = false;
username = (String) getParameterValue("username");
password = (String) getParameterValue("password");
try {
initConnection();
isValidUser = checkAppuser(username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setParameterValue("isValidUser", String.valueOf(isValidUser));
return getOutputData();
}
protected void setInputs(Element inData, List<YParameter> inParams, List<YParameter> outParams)
{
this.inData = inData;
this.inParams = inParams;
this.outParams = outParams;
}
public void cancel()
{
this.cancelled = true;
}
public List<YParameter> getRequiredParams() { // corretto
List<YParameter> params = new ArrayList<YParameter>();
YParameter param1 = new YParameter(null, YParameter._INPUT_PARAM_TYPE);
param1.setDataTypeAndName("String", "username", XSD_NAMESPACE);
param1.setDocumentation("appuser username");
params.add(param1);
YParameter param2 = new YParameter(null, YParameter._INPUT_PARAM_TYPE);
param2.setDataTypeAndName("String", "password", XSD_NAMESPACE);
param2.setDocumentation("appuser password");
params.add(param2);
YParameter param3 = new YParameter(null, YParameter._OUTPUT_PARAM_TYPE);
param3.setDataTypeAndName("boolean", "isValidUser", XSD_NAMESPACE);
param3.setDocumentation("check if current user has valid login data");
params.add(param3);
return params;
}
}
我注意到YAWL使用.class文件爲小碼,但我的小碼是一個.java文件,所以我tryed端口,但我沒有成功。有人有關於Yawl 4 codelet的經驗嗎?或者,有人可以告訴我如何使用.class文件而不是.java?