close
Kaspersky Endpoint Security

Welcome to

Kaspersky Endpoint Security


By Kaspersky Endpoint Security


Archiv für 24. März 2016



Dieser Blogpost ist veraltet. Bitte beachten Sie, wenn Sie irgendwelche Probleme mit den Dateiänderungen K2HostServer.config haben.

In der Serie 1200, sind ein paar neue Web-Services aus der Box zur Verfügung. In diesem Artikel werde ich Ihnen sagen, was sie sind für, wie Sie sie verwenden können und einen Einblick auf die technischen Details hinter den Dienstleistungen geben Ihnen besser zu verstehen, sie zu machen.

Es gibt zwei Dienste neu in der 1200-Serie K2:

  • K2 Dienstleistungen
  • K2 Smartobject Dienstleistungen

Die K2 Dienstleistungen wurden zum ersten Mal in dem KB001200-Update eingeführt, die eine WS und WCF Endpunkt enthält. Eine spätere Version wird REST-fähige Endpunkte für die K2 Dienstleistungen bringen. Die Smartobject Services werden in KB001230 freigegeben.

Dieser Beitrag deckt die und Release-Funktionalität. Die zusätzlichen REST-fähige Endpunkte für K2 Services wird einmal freigegeben in einem separaten Beitrag diskutiert werden.

K2 Dienstleistungen

Diese Dienste bieten Ihnen die Möglichkeit, mit Prozessinstanzen und Arbeitsliste Artikel über Standard-WS oder WCF-Schnittstellen zu beteiligen und zu interagieren. Der WS und WCF Endpunkt bieten die gleiche Funktionalität nur mit einer anderen Schnittstelle. Mit Blick auf die Funktionalität, es ist ungefähr das gleiche wie das SourceCode.Workflow.Client Namespace bietet. Offensichtlich sind nicht alle Funktionalität ist in dieser ersten Version enthalten.

Der WCF-Version macht die IWorkflow und IWorklist Schnittstellen. Der WS-Endpunkt hat die gleichen Methoden, die von einer Schnittstelle bereitgestellt. Es gibt einige kleine Unterschiede, aber das sind nur, weil es ein Objekt ist und nicht zwei Schnittstellen. Sowohl WS und WCF aussetzen Objekte wie ProcessInstance, WorklistItem und verwandte Objekte.

Der Workflow-Dienst in IIS und verbindet sich mit dem K2-Server gehostet. Das bedeutet, es tut. Normalerweise würde dies zu konfigurierenden erfordern. Um diesen Bedarf zu beseitigen, K2 wird mit seinen eigenen Identitätswechsel-Mechanismus für die Verbindung zum K2-Server. Der Identitätswechsel wird durch die API getan, und der IIS-Anwendungspool muss K2 Identitätswechsel Berechtigungen korrekt zu arbeiten.

Beispiele

Dies wäre kein echter Entwickler Blogpost ohne Code sein, so sind hier einige Beispiele.

Die WCF Beispiele werden unter Verwendung einer Konsolenanwendung in VS2010 erstellt. Einfach einen Dienstverweis auf den K2 Dienstleistungen WCF.svc hinzufügen und Sie werden gut zu gehen.

Die WS und WCF-Endpunkte innerhalb der gleichen Web-Anwendung als K2 Arbeitsbereich gehostet, so dass die in etwa so aussehen URL:

  • Host] /K2Services/WCF.svc
  • Host] /K2Services/WS.asmx

Wenn Sie den WS-Endpunkt in VS2010 verwenden möchten, stellen Sie sicher, verwenden Sie das Erbe Weg, um den Endpunkt der Zugabe. Sie können dies tun, indem Sie auf Erweitert klicken im Assistenten "Dienstverweis hinzufügen", und klicken Sie dann auf "Add Web Reference". Wenn Sie Service Verweis hinzufügen verwenden, um auf dem WS-Endpunkt, wird es Peer-förmig sein. Wenn Sie es der richtige Weg hinzufügen, wird Code, um die WS-Endpunkt fast identisch mit dem Endpunkt WCF.

Starten eines Prozesses

K2Services.IWorkflow Workflow = new K2Services.WorkflowClient () als K2Services.IWorkflow; K2Services.ProcessInstance procInst = new K2Services.ProcessInstance (); procInst.FullName = "K2Project1 \\ K2Contacts"; procInst.DataFields = new K2Services.DataField [1]; procInst.DataFields [0] = new K2Services.DataField (); procInst.DataFields [0] .Name = "Kreis"; procInst.DataFields [0] .Value = 9; procInst.Folio = "Verfahren 1"; workflow.StartNewProcessInstance (procInst, false);

In diesem Beispiel wird nur die IWorkflow Schnittstelle verwendet wird und ein Prozess gestartet wird. Sie können Datafield Werte übergeben, wenn nötig. Sie werden bemerken, dass ich einfach eine ProcessInstance über den Konstruktor erzeugt, ist die Fullname-Eigenschaft jetzt wichtig, weil das identifiziert, welcher Prozess gestartet werden soll. Es gibt auch eine StartNewProcessInstanceScalar Methode, die einen String als Prozessnamen akzeptiert. Der Boolesche Wert gibt an, ob der Prozess synchronen oder asynchronen gestartet werden soll

Kennenlernen der Arbeitsliste Artikel

K2Services.IWorklist Vorrat = new K2Services.WorklistClient () als K2Services.IWorklist; K2Services.WorklistItem [] worklistItems = worklist.OpenWorklist (true); foreach (K2Services.WorklistItem worklistItem in worklistItems) {          Console.WriteLine ( "{0} - {1} - {2}", worklistItem.SerialNumber, worklistItem.ProcessInstance.Folio, worklistItem.ProcessInstance.DataFields [0] .Value); } Console.ReadLine ();

Die IWorklist Schnittstelle dient WorklistItems zu bekommen. Der Parameter in der OpenWorklist definiert, wenn Datafields geladen werden soll. Nicht sie bewirkt eine höhere Leistung.

Ausführen einer Aktion

K2Services.IWorklist Vorrat = new K2Services.WorklistClient () als K2Services.IWorklist; // Die worklistitem von serial und verteilen sie. K2Services.WorklistItem worklistItem = worklist.OpenWorklistItem ( "1_9", true); // Some info Drucken. Console.WriteLine ( "Process Folio: {0}", worklistItem.ProcessInstance.Folio); Console.WriteLine ( "Process Datafield: {0} - {1}", worklistItem.ProcessInstance.DataFields [0] .name worklistItem.ProcessInstance.DataFields [0] .Value); Console.WriteLine ( "WorklistItem Status: {0}", worklistItem.Status); // Die möglichen Aktionen Drucken foreach (string Aktion in worklistItem.Actions) {       Console.WriteLine ( "Mögliche Lösung: {0}", action); } // Aktion ausführen worklist.ExecuteActionByWorklistItem (worklistItem "Genehmigen", false); //worklist.ExecuteActionBySerial("1_9 "," genehmigen ", true);

ein worklistitem actioning ist auf zwei Arten möglich. Dieses Beispiel verwendet die WorklistItem Objekt, aber es gibt auch eine ExecuteActionBySerial so dass Sie das WorklistItem Objekt nicht benötigen. Der boolean Parameter ist es synchron oder asynchron zu machen.

K2 Smartobject Dienstleistungen

K2 Smartobjects haben immer ein wichtiger Integrationsmechanismus für die K2-Plattform gewesen. Smartobjects ermöglicht es Ihnen, Daten in Prozesse, Berichte und andere Systeme zu integrieren. Es ist der Mechanismus zur Integration von Daten in und um Prozesse. Am Anfang hatte Smartobjects einige Probleme (vor allem Leistung). Die Version 4.5 wurde deutlich, Verbesserungen an dieser Front. Mit wirklich Smartobjects kann die Integration mit Ihren Workflow oder anderen Systemen sehr einfach zu machen. auch Smartobjects in Ihrem Projekt bedeutet, dass Sie die K2-Baugruppen zu verwenden, hatte Informationen von Smartobjects zu speichern oder abrufen. Dies bedeutet eine Abhängigkeit. Ich bin sicher, dass Sie in der Lage sein, eine Vielzahl von Gründen nicht zu denken, eine Abhängigkeit zu wollen. Die Smartobject-Service ermöglicht es Ihnen, Smartobjects mit einem WCF oder REST-Endpunkt, zu entfernen, diese Abhängigkeit zu nutzen.

Der WCF-Endpunkt ermöglicht es Ihnen, um die volle Funktionalität zu verwenden, die Smartobjects Sie geben. Derzeit werden nur die REST-Endpunkt hat die Möglichkeit, Smartobject Liste Methoden zu verwenden, so dass Sie nur eine Liste von Daten lesen. Der Grund für diese Einschränkung ist, weil Sie (viel) übergeben müssen werde oder Parameter, wenn andere Methoden Smartobject zu tun.

Neben den Integrationsfähigkeit, die diesen Dienst zur Verfügung stellt. Der Dienst wurde auch eine WCF-Endpunkt zu schaffen für Unternehmen erstellt. Das ermöglicht auch die Integration von unterschiedlichen Datenquellen und die Smartobject Dienst ermöglicht dies auch tun.

Konfigurieren von Smartobject Dienstleistungen

Die Gastgeber die Endpunkte für die Smartobject-Service. Die Konfiguration für den Dienst ist daher in der K2HostServer.config befindet. Es ist sehr wichtig, dass die Konfiguration richtig zu verstehen, wie es geht zu beeinflussen, welche Smartobjects ausgesetzt sind und wie sie ausgesetzt sind!

Out of the box, dieser Service "einfach funktioniert", nachdem die er für die enableService Parameter verwenden, aber es gibt einige gute Gründe, es nicht zu schalten jetzt auf Ihrem Produktionssystem. In der Standardeinstellung deaktiviert die Smartobject Service können Sie es aktivieren, indem Sie den enableService Parameter auf true zu ändern. Dadurch wird die K2-Server verursachen Endpunkte für jeden Smartobject in Ihrer Umgebung zu schaffen. Verfügbare Endpunkte können mit dieser URL eingesehen werden:

Server]: 8888 / SmartObjectServices / Endpunkte / endpoints.xml

Auf meinem Rechner sieht die Seite wie folgt aus:

Da dies eine Änderung in Ihrem K2HostServer.config ist, müssen Sie den K2-Server neu zu starten. Inbetriebnahme nimmt den K2-Server jetzt ein wenig mehr Zeit, weil es die Endpunkte für jeden Smartobject erzeugt Sie haben. Es ist durch die Endpunkte in dem K2-Server-Hosting, dass die Generation dynamisch sein kann.

K2 Smartobject Sicherheit ist nach wie vor für alle Smartobject Methoden angewendet, die ausgeführt werden. Sie können mehr granulare Kontrolle, um sicherzustellen, verlangen, dass Smartobjects sind überhaupt nicht über den K2 Smartobject Dienstleistungen ausgesetzt. Die ausschließen Konfigurationsparameter können Sie Kategorien von SmO ist auszuschließen. In meinem Beispiel (unten) habe ich jede Kategorie ausgeschlossen und verwendet, um einen statischen Endpunkt nur eine zu belichten.

<SmoServices enableEndpoints = "true" enableEvents = "true" enableCrossDomainPolicy = "false" baseUri = "Bindung =" WsHttpBinding "specialCharacterReplacement =" _ ">  <ManagedEndpoints> <Statisch>  <Endpunkte> <Endpunkt categoryPath = "K2Contacts /" smartobjectName = "Kontakte" alias = "ContactsV1" isolation = "single" /> </ Endpunkte> </ Statisch>  <Ausgeschlossen alle = "true" /> </ ManagedEndpoints>  </ SmoServices>

Der statische Endpunkt gibt es eine eindeutige (Kurz ish) URL, die (in diesem Fall) macht nur, dass ein Endpunkt. Der Endpunkt wird in der EndPoints.xml aufgeführt. Statische Endpunkte bieten auch die Möglichkeit, eine bestimmte Version einer Smartobject Definition zu binden (unter Verwendung des smartobjectVersion Parameter). Auf diese Weise können Sie Ihre Smartobjects zu aktualisieren, ohne die Client-Anwendung zu ändern. Es könnte eine gute Idee sein, eine Versionsnummer an die URL hinzuzufügen, wenn Sie in einer SOA-Umgebung wie die 'V1' ich in dem obigen Beispiel hinzugefügt haben arbeiten.

Alle, die Config ist schön und alle, aber ich weiß nicht wirklich wie der K2-Server neu zu starten. Das ist, wo die enableEvents nützlich sein könnten. Auf diese Weise können Sie angeben, ob der Dienst für Smartobject Auslösungen hören sollte. Wenn das Ereignis eintritt, wird aktualisiert der Dienst den Endpunkt (s). Der statische Endpunkt hat auch einen isolation Parameter, der "Shared" werden kann oder "isoliert". Geteilt bedeutet es, Teil einer gemeinsam genutzten Applikations-Domäne ist. Isoliert bedeutet es seine eigene Anwendungsdomäne hat. Wenn die Smartobject Entfaltungsereignis empfangen wird, nur, dass einzelne Anwendungsdomäne, die die Smartobject in ist wird aktualisiert.

Verbrauchen die Smartobject Dienstleistungen Endpunkte

SICH AUSRUHEN

Zeigt, wie die REST-Schnittstelle funktioniert, ist recht einfach, einen Browser zu tun, verwenden. Gehen Sie einfach auf den Endpunkt in der Endpoints.xml aufgeführt. Danach können Sie den Namen der Methode Sie ausführen möchten, schreiben. In meinem Beispiel wird das sein:

Server]: 8888 / SmartObjectServices / rest / ContactsV1 / Get List

Notieren Sie sich den Raum in der URL (oder% 20) und beachten Sie, dass am Ende kein Slash ist. Der REST-Endpunkt nimmt auch Parameter, ein Beispiel hierfür:

Server]: 8888 / SmartObjectServices / rest / ContactsV1 / Get List $ skip = 0 & $ top = 2 & $ format = Atom?

Die $ überspringen und $ oben können Sie einen Ausschnitt der Informationen zu definieren, die Sie benötigen. Das verwendete Format ist hier ATOM. Standard ist XML, aber JSON wird ebenfalls unterstützt. Denken Sie daran, zu diesem Zeitpunkt nur die Listenmethoden werden unterstützt.

WCF

Für die WCF-Endpunkt, dann ist es am besten, einfach ein Beispiel zu zeigen. Eine kleine Konsolenanwendung in VS2010 gebaut und .NET 4.0 die folgende URL in den Dienstverweis hinzufügen Dialog mit:

Server]: 8888 / SmartObjectServices / wcf / ContactsV1

Und es gibt das Beispiel-Code:

K2SOServices.ContactsSvc contactService = new K2SOServices.ContactsSvcClient () als K2SOServices.ContactsSvc; // Erstellen Sie einen neuen Kontakt - I von Smartobject Kontakte genannt (mit S) - sehr schlecht Namensgebung :-) K2SOServices.Contacts Kontakt = new K2SOServices.Contacts (); contact.Name = "Capgemini Nederland B.V."; contact.Phone = "+31 (0) 30 689 0000"; contact.Address = "Papendorpseweg 100"; contact.Zipcode = 3528; contact.City = "Utrecht"; contact.Country = "Niederlande"; // Den Dienst aufrufen und den neuen Kontakt zurück (mit automatisch generierten ID-Eigenschaft) erhalten K2SOServices.Contacts NewContact = contactService.ContactsSvc_Create (Kontakt); Console.WriteLine ( "Neuer Kontakt-ID: {0}", newContact.Id); // Erstellen Sie eine 'query'-Kontaktobjekt. K2SOServices.Contacts loadContact = new K2SOServices.Contacts (); loadContact.Id = newContact.Id; // Abfrage und zeigen den Kontakt K2SOServices.Contacts loadedContact = contactService.ContactsSvc_Load (loadContact); Console.WriteLine ( "{0} - {1}", loadedContact.Id,loadedContact.Name); // Abfrage alle Kontakte K2SOServices.Contacts [] allContacts = contactService.ContactsSvc_GetList (null); foreach (K2SOServices.Contacts ContactItem in allContacts) { Console.WriteLine ( "{0} - {1}", contactItem.Id, contactItem.Name); }

Die erzeugten Methoden sind nahezu identisch mit den tatsächlichen Smartobject Methoden. Sonderzeichen, die in einer .NET-Methode nicht erlaubt sind, werden ersetzt durch, was auch immer in der "specialCharacterReplacement" Option in der Konfiguration angegeben ist. In diesem Fall ließ ich es auf den Standardstrich.

Alle Methoden, die Sie auf der WCF-Dienst aufrufen kann eine Smartobject als Parameter. Sie kehren auch eine Smartobject (oder eine Liste von ihnen). Die Parameter werden für die Filterung verwendet. Die Methode Load () werden einige Parameter müssen eindeutig ein Smartobject identifizieren sie zurückzukehren. Auf der Liste Methode können Sie die Parameterfilterung anwenden verwenden. Im Beispiel gehe ich einfach NULL die vollständige Liste zu erhalten. Als ich anfing, mit diesem Dienst zu spielen habe ich versucht, die Löschmethode und fand, dass es auch eine Smartobject zurückgibt. Das schien ein bisschen komisch. Um zu verstehen, warum, darüber nachzudenken, was Sie tun, wenn Sie Ihren Smartobject entwerfen. Sie ordnen Smartobject Eigenschaften zu Service-Objekteigenschaften. Wenn Sie die Zuordnung für die Löschmethode zu tun, können Sie eine Rückkehr Zuordnung angeben. Diese Rückgabewerte werden in der Rückkehr Smartobject enden.

Dies zeigt, dass die WCF-Endpunkt liefert Ihnen wirklich mit der gleichen Funktionalität wie die K2-API tut.

Schlussfolgerung

K2 hat wirklich eine gute Leistung, um neue Wege zur Integration mit der K2-Plattform gemacht. Aus meiner Entwickler Sicht ist es wirklich eine gute vollständig typisiert Zugang zum K2 Arbeitsliste und Prozessdaten (K2 Services) und Smartobjects (K2 Smartobject Services) zu haben, ohne dass mich bauen zu müssen. Jede Smartobject I bereitstellen können automatisch einen WCF-Endpunkt, die ich in meinen Anwendungen verwenden können. Ich kann sogar nicht-Code Zugriff auf Smartobject Daten haben, und bald Vorrat und Prozessinstanzen über REST-fähige Endpunkte. Denken Sie daran, nach der nächsten K2-Update zu prüfen, um den Arbeitsvorrat und Prozess zusammen mit etwas REST-fähige Endpunkte genannt zu lernen "sync".


Endpoint-Security 2014 gartner     Endpoint-Security-10 mcafee

Categories and tags