4

ここにシナリオがあります: コンポーネント 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;
}
}
4

1 に答える 1