Siebel COM数据控制文件传输

时间:2011-10-17 16:28:53

标签: c# com siebel eai

使用COM数据控件从Siebel获取附件。

SiebelBusObjectInterfaces.SiebelDataControl sblDataControl = new SiebelBusObjectInterfaces.SiebelDataControl();
bool success = sblDataControl.Login("host=\"siebel.TCPIP.None.None://bla bla bla /EAIObjMgr_enu\"", "karephul", getPassword());
string errorCode = sblDataControl.GetLastErrCode() + " " + sblDataControl.GetLastErrText();
SiebelBusObjectInterfaces.SiebelBusObject oBO;
SiebelBusObjectInterfaces.SiebelBusComp serviceRequest;
SiebelBusObjectInterfaces.SiebelBusComp actionAttachment;

oBO = sblDataControl.GetBusObject("Action");

actionAttachment = oBO.GetBusComp("Action Attachment");
success = actionAttachment.ActivateField("Activity Id");
success = actionAttachment.ActivateField("ActivityFileName");

success = actionAttachment.ClearToQuery();
success = actionAttachment.SetSearchSpec("Activity Id", "3-QOUKDD"); // hard code for now.
success = actionAttachment.SetSearchSpec("ActivityFileExt", "txt");
success = actionAttachment.ExecuteQuery(1); // ForwardOnly = 1, I guess;

if (actionAttachment.FirstRecord())
{
  string fileName = actionAttachment.GetFieldValue("ActivityFileName");
  string fileLoc = actionAttachment.InvokeMethod("GetFile", "ActivityFileName");
}

以下代码获取相应的文件并将其保存在服务器的临时文件夹中,并为我提供完全限定的路径。

string fileLoc = actionAttachment.InvokeMethod("GetFile", "ActivityFileName");

有没有办法让文件到我的本地机器?

上下文

此代码是用C#编写的,我们在客户端运行此代码,该代码无权访问服务器的临时目录。

由于 Karephul

2 个答案:

答案 0 :(得分:1)

由于您通过datacontrol连接到http,这相当于连接到瘦客户端。如果通过专用客户端连接,则可以将文件直接保存到系统中。

上述3种解决方案可行,但如果附件大小不成问题,我建议您通过电子邮件发送文件。

答案 1 :(得分:0)

在与Siebel工作的一些人交谈之后,我发现使用COM API我无法将文件送到本地机器。

选项:
1.将temp文件夹设为public并获取文件。
2.要求Siebel团队公开Web服务以获取该文件。
3.要求Siebel团队提供下载文件的REST类型链接。