ここにシナリオがあります: コンポーネント A を含むページがあります。コンポーネント A にはリンクされたコンポーネント B と C がほとんどありません。編集者がコンポーネント B を変更し、コンポーネントがまだワークフローにある間にステージング ターゲットに公開して、レビューアーがステージングの変更を表示できるようにする場合サーバーはコンポーネント B を承認する前に.デフォルトの動作を上書きして、編集者がアイテムのアクティビティを完了する前に変更をステージング環境に公開できるようにしますか?
また、コンポーネント B を 2 番目のページに直接挿入すると、次を使用して、ワークフローの自動化されたアクティビティから VBScript から発行できました。
Dim strItemURI
strItemURI = CurrentWorkItem.GetItem(2).ID
Dim oComp
Set oComp = TDSE.GetObject(strItemURI, 1)
Call oComp.Publish("tcm:0-13-65537", True, True, False)
Set oComp = Nothing
FinishActivity "Automatic Activity ""Publish to Staging"" Finished"
ワークフロー中にステージング環境に発行されたリンクされたコンポーネントの変更されたバージョンを許可するために、上記のシナリオを達成するためにカスタム リゾルバーを作成する必要がありますか?
任意のアイデアやサンプルをいただければ幸いです。
ありがとう。
更新しました:
パッケージ内のアイテムの変更されたバージョンを置き換える TBB を作成しようとしています。これについて何か考えはありますか?ここにいくつかのコードがあります:
public void Transform(Engine engine, Package package)
{
try
{
_publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;
string stagingTarget = Settings.GetSetting("StagingTargetUri");
PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget), engine.GetSession());
if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{
VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);
if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId, versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));
package.Remove(item);
Item mainComponent= package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}