четверг, 18 февраля 2010 г.

Enable Audit in WSS

В некоторых случаях необходимо включить аудит на WSS, в MOSS для этого есть стандартное решение, в WSS нужно установить дополнение.

http://wssaudit.codeplex.com/

Подробности вот в этой статье:

http://msdn.microsoft.com/en-us/magazine/cc794261.aspx?pr=blog

Alfresco ECM

Первые впечатления:

По своей работе столкнулся с ECM системой Alfresco, в общем впечатления не радужные.

Что не понравилось, бинарный пакет хоть и есть, но как всегда в мире опенсорсного софта устарел.

Ладно, немного покопались с ним все решили, дальше веселей сборка индексов при первом запуске, после поиска в интернете решение нашлось: Удалить каталог с индексами и удалить базу данных.

После проблема аутентификации в домене, снова феерическое удовольствие от Google – huntinga.

Пока еще не решена проблема CIFS, убито на это все чудо уже 3 дня, моего личного времени.

И впечатления от продукта сразу скажу никакие, по моим представлениям если есть Step by Step Guide, то после выполнения всех шагов должен быть воспроизводимый результат. В общем меня не порадовало, и представил как феерично это все будет настраиваться на местах, вот реально не коробочный это продукт и рассчитан на привязку под конкретного поставщика решений, в общем денег на нем сделать сложно.

Мораль сей истории: не надо пытаться экономить, считать надо.

P.S. да я люблю продукты Microsoft

среда, 10 февраля 2010 г.

Create MOSS Site Columns Programmatically and adding Field to Content Type Programmatically

 

Проблема: добавить новую колонку в тип содержимого.

Описание: Прямой вызов Fields.Add(“имя”,SPFieldType.Text,false) на типе содержимого выдает исключение, поэтому мы немного изменим код и таки добьемся своего результата.

Первоначально создадим столбец узла:

Будем использовать метод создания поля из XML определения, что необходимо заметить мы используем предопределенный идентификатор для задания поля. Второй момент, при создании поля в качестве параметра name указывайте InternalName в дальнейшем, DisplayName можно переопределить.

string siteUrl=http://testingportal.com;

string fieldXml = "";

string fieldGuid="{21C910B8-BA41-413a-A87E-D0D05AC4A5A8}";

string fieldInternName="customField";

fieldXml = String.Format("<field id="\" group="\" name="\" format="\" type="\">", fieldGuid, fieldInternalName);

using (SPSite site = new SPSite (siteUrl))

{

using (SPWeb web = site.rootWeb)

{

rootWeb.Fields.AddFieldAsXml(fieldXml);

}

}

Просто создать новый тип содержимого невозможно, поэтому мы выбираем из уже существующих типов содержимого. Для создания типа содержимого воспользуйтесь «Фичей»

SPSite site = new SPSite (_siteUrl)
PublishingSite pubSite = new PublishingSite(site);
SPContentType contentType = pubSite.ContentTypes[contentTypeName];
SPField field = pubSite.RootWeb.Fields[fieldGuid];
SPFieldLink fieldLink = new SPFieldLink(field);
contentType.FieldLinks.Add(fieldLink);
contentType.Update(true);
Позже можно натйти нужное вам поле с помощью следующего кода.
foreach (SPFieldLink fieldRef in contentType.FieldLinks)
{
if (fieldRef.Id == fieldGuid)
return fieldRef;
}

Заключение, вот так иногда не вполне очевидно, но можно сделать практически все.

среда, 3 февраля 2010 г.

SPListItemCollection and Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)

В общем некрасивая ошибка и трудно уловимая, а суть в том что при составлении CAML запроса я пропустил аттрибут Type='Text'. Решение как всегда нашлось однако времени было потрачено немало.
 
 
 
 
 
 
private String GenerateQuery(String postcode)
{
    StringBuilder sbQuery = new StringBuilder();
    sbQuery.Append("<Where>");
    sbQuery.Append("<Eq>");
    sbQuery.Append("<FieldRef Name='Title' />");
    sbQuery.Append("<Value>1234AA</Value>");
    sbQuery.Append("</Eq>");
    sbQuery.Append("</Where>");
    return sbQuery.ToString();
}
private String GenerateQuery(String postcode)
{
    StringBuilder sbQuery = new StringBuilder();
    sbQuery.Append("<Where>");
    sbQuery.Append("<Eq>");
    sbQuery.Append("<FieldRef Name='Title' />");
    sbQuery.Append("<Value Type='Text'>1234AA</Value>");
    sbQuery.Append("</Eq>");
    sbQuery.Append("</Where>");
    return sbQuery.ToString();
}