Postgresql 使用项目id访问processmaker中的数据库连接列表
我正在ProcessMaker3.0中开发RESTAPI。其中我想使用位于远程服务器的外部数据库。在is中创建连接时,会出现未经授权的错误。 为了创建数据库连接,我引用了以下链接: 我的代码是Postgresql 使用项目id访问processmaker中的数据库连接列表,postgresql,processmaker,Postgresql,Processmaker,我正在ProcessMaker3.0中开发RESTAPI。其中我想使用位于远程服务器的外部数据库。在is中创建连接时,会出现未经授权的错误。 为了创建数据库连接,我引用了以下链接: 我的代码是 echo "in php script"; $pmServer = "http://127.0.0.1"; //set to your ProcessMaker address $accessToken = isset($_COOKIE['access_token']) ? $_COO
echo "in php script";
$pmServer = "http://127.0.0.1"; //set to your ProcessMaker address
$accessToken = isset($_COOKIE['access_token']) ? $_COOKIE['access_token'] : getAccessToken();
$accessToken = $_COOKIE['access_token'];
function getAccessToken()
{
echo "in getAccessToken function";
}
check_cookie($accessToken);
check_header($pmServer,$accessToken);
function check_cookie($accessToken)
{
echo "in checkcokkie function";
/*check cookie expired or not*/
try{
if (empty($accessToken) and isset($_COOKIE['access_token']))
throw new Exception("Internal Server Error 500");
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
try{
if (empty($accessToken)) { //if the access token has expired
//To check if the PM login session has expired: !isset($_COOKIE['PHPSESSID'])
/*header("Location: formLogin.php"); //change to match your login method
die();*/
throw new Exception("Internal Server Error 500");
}
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
//header('location: formLogin.php');
}
}
/***************************/
function check_header($pmServer,$accessToken)
{
echo "in check header";
$ch = curl_init($pmServer . "/api/1.0/workflow/project");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer " . $accessToken));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$aUsers = json_decode(curl_exec($ch));
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
try{
if ($statusCode != 200) {
if (isset ($aUsers) and isset($aUsers->error))
echo "Error code:{$aUsers->error->code}\n Message: {$aUsers->error->message}\n";
else
echo "Error: HTTP status code: $statusCode\n";
//header("Location: formLogin.php"); //change to match your login method
//die();
throw new Exception("Internal Server Error 500");
}
else {
foreach ($aUsers as $oUser) {
echo "{$oUser->prj_uid} {$oUser->prj_name} {$oUser->prj_description} \n";
/*displying database connections*//////
$aVars = array(
"dbs_type" => "PostgreSQL",
"dbs_server" => "192.168.190.79",
"dbs_database_name"=> "adani",
"dbs_username"=> "postgres",
"dbs_password"=> "stp2015",
"dbs_port"=> 5434,
"dbs_encode"=> "utf8",
"dbs_description"=> "Gas project"
);
/*prj_id="2146606445739a4aba0fc12089436797"; dbs_id="8728332515739af251ccf86002880169"*/
echo "<br/>";
$prj_id = $aUsers->prj_uid;
$ch = curl_init($pmServer . "/api/1.0/workflow/project/$prj_id/database-connection");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer". $accessToken));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($aVars));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$aUsers = json_decode(curl_exec($ch));
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
try{
if ($statusCode != 201) {
if (isset ($aUsers) and isset($aUsers->error))
echo "Error code:{$aUsers->error->code}\n Message: {$aUsers->error->message}\n";
else
echo "Error: HTTP status code: $statusCode\n";
//header("Location: formLogin.php"); //change to match your login method
//die();
throw new Exception("Internal Server Error 500");
}
else {
foreach ($aUsers as $oUser) {
echo "{$oUser->dbs_uid} {$oUser->dbs_type} \n";
}
}
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
//header('location: formLogin.php');
}
/************************************/
}
}
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
header('location: formLogin.php');
}
} ?>
echo“在php脚本中”;
$pmServer=”http://127.0.0.1"; //设置为ProcessMaker地址
$accessToken=isset($\u COOKIE['access\u token'])$_COOKIE['access_token']:getAccessToken();
$accessToken=$\u COOKIE['access\u token'];
函数getAccessToken()
{
echo“在getAccessToken函数中”;
}
检查cookie($accessToken);
检查_头($pmServer,$accessToken);
函数检查\u cookie($accessToken)
{
echo“在checkcokkie函数中”;
/*检查cookie是否过期*/
试一试{
if(空($accessToken)和isset($\u COOKIE['access\u token']))
抛出新异常(“内部服务器错误500”);
}
捕获(例外$e){
回显“消息:”。$e->getMessage();
}
试一试{
if(空($accessToken)){//如果访问令牌已过期
//要检查PM登录会话是否已过期:!isset($\u COOKIE['PHPSESSID'])
/*header(“Location:formLogin.php”);//更改以匹配您的登录方法
模具()*/
抛出新异常(“内部服务器错误500”);
}
}
捕获(例外$e){
回显“消息:”。$e->getMessage();
//标题('location:formLogin.php');
}
}
/***************************/
函数检查\u头($pmServer,$accessToken)
{
回显“在检查标题中”;
$ch=curl_init($pmServer./api/1.0/workflow/project”);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(“授权:承载”。$accessToken));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$aUsers=json_decode(curl_exec($ch));
$statusCode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码);
卷曲关闭($ch);
试一试{
如果($statusCode!=200){
if(isset($aUsers)和isset($aUsers->error))
echo“错误代码:{$aUsers->Error->code}\n消息:{$aUsers->Error->Message}\n”;
其他的
echo“错误:HTTP状态代码:$statusCode\n”;
//header(“Location:formLogin.php”);//更改以匹配您的登录方法
//模具();
抛出新异常(“内部服务器错误500”);
}
否则{
foreach($aUsers作为$oUser){
echo“{$oUser->prj_-uid}{$oUser->prj_-name}{$oUser->prj_-description}\n”;
/*显示数据库连接*//////
$aVars=数组(
“dbs_type”=>“PostgreSQL”,
“dbs_服务器”=>“192.168.190.79”,
“dbs_数据库_名称”=>“adani”,
“dbs_用户名”=>“postgres”,
“dbs_密码”=>“stp2015”,
“dbs_端口”=>5434,
“dbs_编码”=>“utf8”,
“dbs_说明”=>“天然气项目”
);
/*prj_id=“2146606445739A4 ABA0FC12089436797”;dbs_id=“87283325739AF251CF86002880169”*/
回声“
”;
$prj_id=$aUsers->prj_id;
$ch=curl_init($pmServer./api/1.0/workflow/project/$prj_id/database connection”);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(“授权:承载”。$accessToken));
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($aVars));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$aUsers=json_decode(curl_exec($ch));
$statusCode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码);
卷曲关闭($ch);
试一试{
如果($statusCode!=201){
if(isset($aUsers)和isset($aUsers->error))
echo“错误代码:{$aUsers->Error->code}\n消息:{$aUsers->Error->Message}\n”;
其他的
echo“错误:HTTP状态代码:$statusCode\n”;
//header(“Location:formLogin.php”);//更改以匹配您的登录方法
//模具();
抛出新异常(“内部服务器错误500”);
}
否则{
foreach($aUsers作为$oUser){
echo“{$oUser->dbs_-uid}{$oUser->dbs_-type}\n”;
}
}
}
捕获(例外$e){
回显“消息:”。$e->getMessage();
//标题('location:formLogin.php');
}
/************************************/
}
}
}
捕获(例外$e){
回显“消息:”。$e->getMessage();
标题('location:formLogin.php');
}
} ?>
它给我以下错误,如图所示
我正在添加这个RESTAPI并创建一个数据库函数,但它不显示任何连接列表。
如何显示连接列表以及如何创建到外部数据库的数据库连接