WebアプリケーションとMantisBT間の通信

加入者からのアプリケーションを追跡するためにMantisを使用することは、しばしば次の困難に直面しました。

1)新しいアプリケーションを追加するときは、Mantisの顧客のカードから情報の一部を入力またはコピーする必要があります。これは、第一に怠lazであり、第二に情報の歪みにつながる可能性があります。

2)怠、第2に、歪んだ情報に関して、第1段落を参照してください。



この問題を解決するには、Mantis API-mantisconnect.phpを使用します。



開始する


このAPIの言及はハブとmantisbtフォーラムの両方で省略されましたが、問題はすべての会話が「そこにあるものはすべて簡単」という事実に焦点を当てていたことでしたが、プログラマーではない私にとって、何を始めますか。 今後は、すべてが本当にシンプルであると言えます。それについてお話します。



MantisのAPIはSOAPプロトコルを使用します。 これを使用するには、外部NuSOAPライブラリが必要です。または、標準拡張機能php_soapを使用できます。 このAPIの内容は次のとおりです。

http://www.mantisbt.org/bugs/api/soap/mantisconnect.php

http://www.mantisbt.org/bugs/api/soap/mantisconnect.php?wsdl



次に、このすべての富をどう処理するかを考えてみましょう。



次のようなphpスクリプトを作成する必要があります。

1)SOAPクライアントを作成する



$client = new nusoap_client($WSDL_POINT, false);
      
      





$WSDL_POINT



は、トラッカーのmantisconnect.phpの場所のURL、http:// [site] /api/soap/mantisconnect.php?wsdl



2)作成したクライアントを利己的な目的で使用します。 例として、最も単純な関数-バージョンの表示( mc_version



)を使用します



 $result = $client->call('mc_version', 'http://localhost/mantis/api/soap/mantisconnect.php', 'http://soap.amazon.com');
      
      





結果は、バグトラッカーのバージョンの行になります。



特定のインシデントに関する情報を取得しようとすると、次のスクリプトが取得されます。



 <?php require_once('nusoap-0.9.5/lib/nusoap.php'); $WSDL_POINT = "http://localhost/mantis/api/soap/mantisconnect.php"; $username = 'administrator'; $password = 'root'; $issue_id = 1; $params = array( 'username' => $username, 'password' => $password, 'issue_id' => $issue_id ); $client = new nusoap_client($WSDL_POINT, false); $result = $client->call('mc_issue_get', $params, 'http://localhost/mantis/api/soap/mantisconnect.php', 'http://soap.amazon.com'); echo "<pre>"; print_r ($result); echo "</pre>"; ?>
      
      





$params



は入力変数の配列です。 apiの説明からわかるように、インシデントを受け取るには、ユーザー名、パスワード、インシデント番号が必要です。



結果は、このインシデントに関連するすべてのデータを含む連想配列になります。 print_r()



関数で確認できます。 必要なフィールドを配列の要素として取得できます。



ここでは、問題が発生する可能性が非常に高くなります。インシデントのある配列の代わりに、エラーのある配列が届く場合があります。

 Array ( [faultcode] => Server [faultactor] => [faultstring] => Error Type: SYSTEM NOTICE, Error Description: Use of undefined constant ERROR_DUPLICATE_FILE - assumed 'ERROR_DUPLICATE_FILE',)
      
      





この問題は、ユーザー名/パスワードを使用してMantisと「通信」するユーザーアカウントの設定で、言語設定が英語以外の言語を示している場合に発生します。 これは、カマキリのコードが変更され、ローカリゼーションファイルが修正されなかったためです。



この状況は、次の方法で修正できます。



1)設定で英語を設定します。

2)バージョン1.2.11を待って、修正を約束するか、ナイトリービルドにアップグレードします。

3)ローカリゼーションファイル/lang/strings_russian.txt



自分で修正しますERROR_DUPLICATE_FILE



を一重引用符で囲みます。



リクエストを作成


インシデントで配列を構成するものを見て、インシデントを作成するために同じものを構成できます。 さらに、着信配列で指定しないフィールドは、デフォルトで自動的に更新されます。



サブスクライバーのカードからアプリケーションを作成するには、次のものが必要です。



1)彼の名前;

2)ログイン。



さらに、控訴の理由。



特別に作成されたログインフィールドにログインを配置します。

次の配列を取得します。



 $issue_data = array( 'project' => array ( 'id' => 1 ), 'category' => "general", 'reporter' => array ( 'id' => $reporter_id ), 'summary' => $summary, 'description' => $description, 'custom_fields' => array ($sequence_login_field => array ( 'field' => array ( 'id' => $login_field_id ), 'value' => $login ), ) );
      
      





project_id



= 1-インシデントを追加するプロジェクトのID

$reporter_id



はい、この場所で任意のユーザーを代用できます。 パスワードを知る必要はありません

全従業員

$summary



-フルネームと場合によってはそれ以上で構成されます。 情報の

$description



-連絡の理由

$sequence_login_field, $login_field_id



マンティスから取得

$login



クライアントカードからのサブスクライバーログイン



次に、この配列を$ paramsに入れます

 $params = array( 'username' => $username, 'password' => $password, 'issue' => $issue_data );
      
      





気軽に発送してください。 応答として、作成されたインシデントの数が返されます。



インシデント情報


作成されたすべてのアプリケーションにサブスクライバーのログインがある場合(ログインは一意です)、クライアントのカードを開くと、Mantisに別の石鹸要求、つまりこのサブスクライバーに関連するすべてのインシデントを表示する検索要求を実行できます。



残念ながら、mantisデータベースで検索できるようなリクエストはありませんが、事前に作成された既成のフィルターを使用できます。 私の場合、「クローズ」を除くすべてのステータスを持つ1000件のインシデント用のフィルターを作成し、最後のインシデント変更の時間の昇順でソートしました。



 $params = array( 'username' => $username, 'password' => $password, 'project_id' => 1, 'filter_id' => $filter_id, 'page_number' => 1, 'per_page' => 100 );
      
      







その結果、100件のインシデントの配列を受け入れ、このクライアントカードで指定したログインと一致するログインのみを画面に表示できます。



All Articles