17

私が働いている会社は、私たちが提供するサービスとの統合として管理対象の force.com アプリケーションを構築しています。

force.com Eclipse プラグインで提供される見掛け倒しのツールが原因で、同じファイル セットで同時に作業する際に問題が発生しています。2 人の開発者が同じファイルで作業している場合、1 人には保存できないというメッセージが表示されます。一度マージすると、2 つの「本当によろしいですか」をクリックし、手動でプラグインに変更をサーバーにプッシュさせる必要があります。メッセージ。

基本的に、このツールは変更をマージするという手抜き作業を行い、開発者が作業中のファイルを別の人が変更した場合に、開発者が保存しようとするたびに数分間の作業を強制します。

現在、誰がファイルを編集しているかを同僚に知らせることで、基本的に個々のファイルを「ロック」することで、この問題を回避しています。

この時代にはもっと良い方法が必要だと感じています。使用できる別のツールセット、変更できるプロセス、またはこれを簡単にするためにできることを知っている人はいますか?

4

6 に答える 6

7

Force.com プラットフォームを使用する場合、現在の組織では、状況に応じてさまざまなアプローチが有効であることがわかりました。私たちは皆、Eclipse Force.com プラグインを問題なく使用しており、次のセットアップがうまく機能することを確認しています。

一連の ant コマンドを使用して開発者組織インスタンスにデプロイする集中型バージョン管理システムがあります。次に、作業の範囲に応じて、各開発者が独自の開発組織を持ち、変更をマージして定期的にテストするチャンクに分割するか、単一の開発組織で一緒に作業します (開発者が 2 人いる場合は、主要な問題) ほぼ瞬時に統合できます。

両方が同じファイルで作業しようとしている場合は、とにかくペア プログラミングを行う必要がありますが、同様のシステムの 2 つのコンポーネントで一緒に作業する場合は、同じ組織を共有することで、使用したいシステムを選択し、詳細を個別に肉付けします。

私は両方の方法を広範囲に使用してきましたが、状況によっては非常にうまく機能します。

于 2010-09-24T11:50:24.403 に答える
6

まったく同じ問題がありました。10 人の開発者からなるチームが、多数の Apex クラス (>300) と VF ページ (>300) を持つ force.com アプリケーションに取り組んでいます。

Eclipse プラグインの使用を開始しましたが、次のことがわかりました。

  1. セーブが呼び出されるたびに米国外で作業するのが遅すぎる 5セクション以上かかる
  2. 10 人の開発者チームとの多くのマージの問題に対応

次に、独自の個別のサンドボックスで開発し、コードをマージしてみました。これは小さなプロジェクトでは問題ありませんが、多数のファイルがあり、サンドボックス間で変更をプッシュする必要がある場合、force.com 開発ツールよりも悪いのは force.com のデプロイ/ビルド ツールだけであるため、管理が不可能になります。自動化はなく、すべて手動です。サンドボックス間でデータを移動する簡単な方法もありません。

3 つ目のアプローチは、すべての VF ページと Apex コードをブラウザで編集することでした。(ページの下半分に表示される組み込みエディタは使用せず、バグが多く遅いため)、[セットアップ] > [開発] > [Apex クラス] で通常のエディタを使用するだけです。これはうまくいきました。これを補うために、すべてのコードをダウンロードして SVN リポジトリに保存するスケジュールされたジョブも用意しました。また、デスクトップ上のフォルダーをクリックしてそのコンテンツを圧縮し、静的リソースとしてデプロイできるツールも作成しました。

ただし、このアプローチにはまだ欠点があります。つまり、クラウドでの開発は遅くて面倒です。サービスとしての開発という (セールスフォースの) アイデアはクレイジーです。また、実際の SCM はなく、バックアップとして機能するだけです。

つまり、force.com は CRM であり、開発プラットフォームではありません。走って、逃げて、できるだけ早くそこから離れてください。CRM以外の目的で使用することは、価値があるよりも面倒です. 彼らのスローガンである「No Software」でさえ、私をいつも笑わせてくれます

于 2010-08-05T00:24:57.743 に答える
6

各開発者は個別の開発サンドボックスで作業できます (エンタープライズ エディションを使用している場合、完全な構成と限られた量のデータを備えた 10 個のサンドボックスが料金に含まれていると思いますか?) . 時々、変更をマージし (任意のバージョン管理システムの diff ツールで十分です)、統合環境でそれらをテストします。チェーン開発 -> 統合 -> システム テスト -> Q&A -> 生産は、他の理由でも役立ちます。

たとえば、2 人の男が同じトリガーで作業する場合は、考慮すべき別のトリックを使用できます。開発者向けの「DEV 401」コースで学びました。

  1. すべてのロジックをクラスに移動します。真剣に。単体テストも簡単になります。
  2. ユーザー オブジェクトにカスタム フィールド (複数選択リスト) を追加します。値は、人々が取り組んでいる個々の機能と同じでなければなりません。最大 500 個の値を保持できるので、安全です。
  3. 開発者 1 のユーザー アカウントの場合、ピックリストに「feature1」を設定します。他の人に「feature2」を設定します。
  4. トリガーifでは、各ピックリスト値の存在をテストし、関連するクラスへの呼び出しを開始または終了する を記述します。これは 1 つのクエリを無駄にしますが、必要なコードだけが呼び出されることは確実です。
  5. 各開発者は、独自のクラス ファイルで作業を続けます。
  6. 両方の機能の統合テストでは、両方の機能を含むように複数選択を設定するだけです。

このトリックは、他の人のコードが最適化されておらず、多くのリソースを消費していることが判明した場合に特に役立つことがわかりました。私は自分のユーザー アカウントで彼の機能を無効にして、作業を続けました。

このトリックは、Visualforce ページにもある程度適用できます (コンポーネントに分割できる場合)。

クエリを無駄にしたくない場合は、「ユーザーの名前に X が含まれている」などのロジックを使用してください ;)

于 2010-08-02T18:13:24.387 に答える
1

「開発ライフサイクル ガイド: Force.com プラットフォームでのエンタープライズ開発」を参照してください。これは、developer.force.com のドキュメント ページにあります。

于 2010-08-03T10:23:17.113 に答える
1

私は force.com に詳しくありませんが、ソース管理を使用して、すべてのファイルを force.com からリポジトリにプルできませんでしたか? その後、すべての作業を行い、変更をメインラインにマージできます。その後、必要に応じてメインラインを force.com にプッシュしますか?

于 2010-08-02T17:47:03.927 に答える