SharePoint запускает метод при добавлении элемента в библиотеку - PullRequest
0 голосов
/ 30 ноября 2009

У меня есть библиотека, и я хочу запустить некоторый код при добавлении элемента, чтобы заполнить некоторые дополнительные столбцы. Есть ли способ, которым я могу запустить этот код automcailly. Куда бы я пошел добавить его? Также было бы возможно иметь экран, чтобы иметь возможность редактировать параметры кода. Было бы здорово, если бы указатель в правильном направлении.

Это будет случай создания рабочего процесса?

Ответы [ 4 ]

3 голосов
/ 30 ноября 2009

Рабочие процессы - не самый лучший способ. Вы должны создать приемник события элемента. Причина, по которой я это говорю, заключается в том, что вам нужно, чтобы какой-то код запускался только после добавления элемента. Поскольку вам не нужно поддерживать состояние, рабочие процессы не являются правильным решением этой проблемы. Вот что вы делаете: создайте новый класс в Visual Studio и сделайте так, чтобы он наследовал от SPItemEventReceiver. Переопределите метод ItemAdded() и добавьте туда свою логику. Пример:

public class MyItemEventReceiver : SPItemEventReceiver
{
    public override void ItemAdded(SPItemEventProperties properties)
    {
        base.ItemAdded(properties);
        // do your stuff
    }
}

Этот код будет вызываться после добавления элемента. Если вам нужно запустить код до добавления элемента, вы переопределите метод ItemAdding(). Способ, которым моя компания развертывает приемники событий, немного отличается, но это метод «по книге» с использованием Elements.xml:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListTemplateId="101">
    <Receiver>
      <Name>My Event Receiver</Name>
      <Type>ItemAdding</Type>
      <SequenceNumber>1000</SequenceNumber>
      <Assembly>AssemblyName, Version=1.0.0.0, culture=neutral, PublicKeyToken=[token]</Assembly>
      <Class>Namespace.Class</Class>
      <Data></Data>
      <Filter></Filter>
    </Receiver>
  </Receivers>
</Elements>

Вы упомянули наличие экрана для редактирования параметров кода. Похоже, вы находитесь на грани другой банки с червями, поэтому я не могу говорить об этом напрямую. Однако, если вы хотите передать различные параметры, которые отличаются от развертывания к развертыванию, просто добавьте их в теги <Data> выше. Затем вы можете получить доступ к вашим опциям из свойства properties.ReceiverData в вашем коде. Также обратите внимание, что теги <Filter> ничего не делают - они не были реализованы командой WSS 3. Надеюсь, это поможет.

0 голосов
/ 30 ноября 2009

Приятная вещь о рабочих процессах состоит в том, что пользователь может видеть след того, что происходит в истории рабочего процесса.

Я писал в блоге о приемниках событий от начала до конца: http://koenvosters.wordpress.com/2009/07/31/howto-create-an-event-handler-for-sharepointmoss-2007/

0 голосов
/ 30 ноября 2009

Оба, Workflows или EventReceivers (обработчик событий) могут быть присоединены к спискам или библиотекам и будут выполнять эту работу. Какой из них вы должны использовать, зависит от того, что вы пытаетесь архивировать.

Рабочие процессы немного сложнее, но более мощны и в основном используются для обработки некоторых длительных процессов, которые включают взаимодействие с пользователем. Состояние рабочего процесса контролируется и также сохраняется в SharePoint. Таким образом, рабочий процесс может быть остановлен в определенном состоянии в ожидании действий пользователя. Когда пользователь выполнит свою работу, рабочий процесс продолжится.

В отличие от этого EventReceivers - это просто фрагмент кода, который будет выполняться до или после определенного события в списке или библиотеке, к которой он присоединен. Если EventReceiver запущен, пользователь не сможет взаимодействовать с ним. EventReceiver должен полагаться на данные, которые были доступны, когда событие было инициировано.

0 голосов
/ 30 ноября 2009

Что вы можете сделать, это создать обработчик событий и поместить туда свой код. Вы можете найти пример в этом списке видео.

То, что дает вам EventHandler, - это место для подключения вашего кода и выполнения ваших задач. Вы также можете решить, когда будет выполняться ваш код (Синхронизация или Асинхронизация), то есть до добавления элемента или после. Эта - отличная статья, чтобы узнать о EventHandlers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...