我正在尝试创建一个包含TMS工作流的网站。我在执行工作流时遇到了EOSError 1400个问题。工作流通过单击按钮启动,然后转到WorkflowStudio1TaskCreated过程,然后继续到WorkflowStudio1SendMail。然后,它与上面提到的错误一起崩溃。我做错什么了?

单元代码:
unit Unit1;
interface
uses
Classes, SysUtils, IWAppForm, IWApplication, IWColor, IWTypes,
Data.DBXFirebird, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error,
FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.FB, FireDAC.Phys.FBDef,
FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
FireDAC.DApt, Vcl.Controls, IWVCLBaseControl, IWBaseControl,
IWBaseHTMLControl, IWControl, IWCompButton, Data.DB, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, Data.SqlExpr, wsDB, wsDbx, wsClasses, wsMain;
type
TIWForm1 = class(TIWAppForm)
WorkflowStudio1: TWorkflowStudio;
WorkflowDBXDB1: TWorkflowDBXDB;
SQLConnection1: TSQLConnection;
FDConnectionTMS: TFDConnection;
FDQueryGET: TFDQuery;
FDQueryUPDADTE: TFDQuery;
FDConnectionMedusa: TFDConnection;
FDQueryGetUsers: TFDQuery;
FDQueryUsers: TFDQuery;
FDConnectionUPRO: TFDConnection;
FDQueryGetUser: TFDQuery;
qryInsertObject: TFDQuery;
qryGetZapoUsers: TFDQuery;
qryGetMedusaUsers: TFDQuery;
qryGetEmail: TFDQuery;
IWButton1: TIWButton;
procedure IWButton1Click(Sender: TObject);
procedure WorkflowStudio1TaskCreated(Sender: TObject;
ATaskIns: TTaskInstance);
procedure WorkflowStudio1SendMail(Sender: TObject; TaskIns: TTaskInstance;
AUser: TWorkflowUser; AEmailInfo: TEmailInformation; var Sent: Boolean);
public
end;
implementation
{$R *.dfm}
procedure TIWForm1.IWButton1Click(Sender: TObject);
var
Wrkins : TWorkflowInstance;
t : TTaskInstance;
begin
WorkflowStudio1.UserManager.Users.Add('1', 'Someone', 'temp@tempo.si');
Wrkins := WorkflowStudio1.WorkflowManager.CreateWorkflowInstanceByName('Temp');
Wrkins.Diagram.Variables.FindByName('User').Value := WorkflowStudio1.UserManager.Users.FindById('1').UserName;
WorkflowStudio1.WorkflowEngine.RunWorkflow(Wrkins);
end;
procedure TIWForm1.WorkflowStudio1SendMail(Sender: TObject;
TaskIns: TTaskInstance; AUser: TWorkflowUser; AEmailInfo: TEmailInformation;
var Sent: Boolean);
begin
WebApplication.ShowMessage('send mail');
Sent := True;
end;
procedure TIWForm1.WorkflowStudio1TaskCreated(Sender: TObject;
ATaskIns: TTaskInstance);
begin
WebApplication.ShowMessage('Task ' + ATaskIns.Key + ' created');
end;
initialization
TIWForm1.SetAsMainForm;
end.ServerControl:
unit ServerController;
interface
uses
SysUtils, Classes, IWServerControllerBase, IWBaseForm, HTTPApp,
// For OnNewSession Event
UserSessionUnit, IWApplication, IWAppForm, IW.Browser.Browser;
type
TIWServerController = class(TIWServerControllerBase)
procedure IWServerControllerBaseNewSession(ASession: TIWApplication);
private
public
end;
function UserSession: TIWUserSession;
function IWServerController: TIWServerController;
implementation
{$R *.dfm}
uses
IWInit, IWGlobal;
function IWServerController: TIWServerController;
begin
Result := TIWServerController(GServerController);
end;
function UserSession: TIWUserSession;
begin
Result := TIWUserSession(WebApplication.Data);
end;
procedure TIWServerController.IWServerControllerBaseNewSession(
ASession: TIWApplication);
begin
ASession.Data := TIWUserSession.Create(nil, ASession);
end;
initialization
TIWServerController.SetServerControllerClass;
end.和UserSessionUnit中没有添加任何内容()
发布于 2015-11-12 15:46:35
只是不要试图把所有的东西都放到web应用程序中。相反,您可以创建一个单线程/单用户VCL或控制台应用程序,该应用程序承载TMS工作流组件,并通过某个进程间通信(IPC)接口与Intraweb进程通信。
这是复杂web应用程序的常见方法,它也使用异步处理,而不是在HTTP请求的上下文中执行所有操作。
阅读例如:多普拉:-它是由信息组成的 (slideshare演示)
https://stackoverflow.com/questions/33672309
复制相似问题