シナリオ:
- ユーザーがワークフローのコマンドをクリックします
- ワークフローのカスタムアクションは、いくつかのチェックを実行します
- ワークフローカスタムアクションは、結果に応じて同じワークフローで別のコマンドを実行します
私がこれまでに持っているコードは次のとおりです。
Database db = Factory.GetDatabase("master");
if (Request.QueryString["_id"] != null)
{
var itm = db.GetItem(new ID(Request.QueryString["_id"]));
WorkflowCommand[] availableCommands = wf.GetCommands(itm.Fields["__Workflow state"].Value);
wf.Execute(Request.QueryString["command"], itm, "Testing working flow new screens", false, new object[] { }); // Execute the workflow step.
}
ただし、wf.Execute行でオブジェクトがインスタンスエラーに設定されていませんが、意味のあるスタックトレースなどがありません:(
私はwf.GetCommands
、物事が実際に私が期待する場所にあることを確認するためだけに行をavailableCommands
追加し、存在するコマンドの素晴らしいリストが入力されています。
commandId
が有効であり、存在することを確認しました。
Itm
nullではなくContent Item
、ワークフローが関連付けられている(ワークフローをコンテキストで実行する)。
ユーザーコンテキストなどが有効であり、権限の問題がないことを確認しました。
.aspx
唯一の違いは、 sitecore内で実行されているページ内でこのコードを実行していることです。ただし、適切に設定されていないコンテキストアイテムがない限り、これが問題を引き起こすとは予想していませんでした。