预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

处理请求

输入

方法

  • C++:常量字符*
  • C#: string
要执行的方法的名称。这允许插件选择要执行的操作,而不必先完全解析参数string 。

参数

  • C++:常量字符*
  • C#: string
参数A JSON string 。有关可用参数的更多信息,请参阅详细信息。

通过回调输出

[可选] Result、LogMessage 或 SetError - 提供用户反馈。

细节

这是函数的主要功能。它应该处理所有传入的“方法”请求并执行所需的操作,并通过“结果”回调返回任何数据。

示例实现

void ExampleServicePlugin::HandleRequest(const char* 方法,const char* 参数)

{

     LogMessage(LOG_TRACE, std:: string (__FUNCTION__ + " - Method = "s + method).c_str());

     // 这个示例方法演示了如何从参数中提取各种参数类型。

     // 这是使用 jsoncpp 库完成的,但可以使用任何兼容的 JSON 库完成。

     Json::Value jsonParameters;

    如果(strlen(参数))

     {

         std::stringstream(参数) >> jsonParameters;

     }

     if (std:: string (method) == "DoSomething")

     {

         int myNumber = jsonParameters["myNumber"].asInt();

        双 myFloat = jsonParameters["myFloat"].asDouble();

         std:: string myString = jsonParameters["myString"].asString();

         std::list<int> myArrayOfNumbers;

         for (auto& myValue : jsonParameters["myArrayOfNumbers"])

         {

             myArrayOfNumbers.push_back(myValue.asInt());

         }

         std::list<std::string> myArrayOfStrings;

         for (auto& myValue : jsonParameters["myArrayOfStrings"])

         {

             myArrayOfStrings.push_back(myValue.asString());

         }

         std:: string result = "示例用户SBPI C++ 服务插件。DoSomething 接收参数:myNumber = " + std::to_string(myNumber)

             + ", myfloat = " + std::to_string(myFloat)

             + ", 我的字符串 = " + 我的字符串;

         // 设置结果string 。

        结果(result.c_str());

     }

     else if (std:: string (method) == "DoSomethingToElement")

     {

         // 这个示例方法演示了如何响应用户在单个元素上执行任务。

         std:: string elementID = jsonParameters["elementGUID"].asString();

         Result(std:: string ("C++ 中的示例用户SBPI 插件。DoSomething to元素GUID : " + elementID).c_str());

     }

     else

     {

         // 设置错误string

         SetError(std:: string ("未知方法:" + std:: string (method)).c_str());

     }

}