Information processing system, information processing apparatus, and method for processing information

An information processing system including programs respectively executing predetermined processes includes a first memory unit storing, for each application executing a sequence of processes using electronic data in collaboration with an external service, flow information that defines program identification information and an execution order of the programs, app identification information, a permitting unit receiving a first request that includes the app identification information and external service identification information, acquiring a permission token from the external service, and causing a second memory unit to store the acquired permission token, user identification information, and the app identification information, a sending unit receiving a second request, and a process executing unit receiving a third request and causing the program to execute the sequence of processes, wherein the permitting unit determines a scope of the permission token based on the flow information stored in association with the app identification information.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority under 35 U.S.C. § 119 to Japanese Patent Application No. 2015-184967, filed Sep. 18, 2015, and Japanese Patent Application No. 2016-147243, filed Jul. 27, 2016. The contents of which are incorporated herein by reference in their entirety.

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention relates to an information processing system, an information processing apparatus, and a method for processing information.

Description of the Related Art

In recent years, various external services are provided by cloud computing or the like. For example, there is known an external service, in which electronic data designated by a user are stored in an external storage, or the like.

For example, there is a technique of storing image data, which are acquired by scanning an original using an image forming apparatus, in an external storage (for example, Japanese Unexamined Patent Application Publication No. 2014-032659). As described, there is a technique that the image forming apparatus and the external service collaborate to process.

Here, an authentication method used to process in collaboration with the external service is a technique called OAuth. In OAuth, an application being processed in collaboration with the external service is permitted to use resources of the external service within a range set as a scope.

SUMMARY OF THE INVENTION

An information processing system including at least one information processing apparatus and a plurality of programs respectively executing predetermined processes, the information processing system including a hardware storage implementing a first memory unit configured to store, for each application executing a sequence of processes using electronic data in collaboration with an external service, flow information that defines program identification information that identifies at least one program from among the plurality of programs, the at least one program executing each process of the sequence of processes, and an execution order of the at least one program, application (app) identification information that identifies the application, and screen information of a screen on which the electronic data used in the sequence of processes is designated, while associating the flow information, the app identification information, and the screen information; and a hardware processor implementing a permitting unit configured to receive, from one apparatus from among at least one apparatus coupled to information processing system, a first request that includes the app identification information and external service identification information of the external service, which executes the sequence of processes in collaboration with the application identified by the app identification information, acquire a permission token from the external service identified by the external service identification information included in the first request, after the first request is received, and cause a second memory unit to store the acquired permission token, user identification information identifying a user, and the app identification information while associating the acquired permission token, the user identification information, and the app identification information, a sending unit configured to receive a second request including the app identification information from the one apparatus, and send the screen information stored in the first memory unit in association with the app identification information included in the second request to the one apparatus being a request source of the second request, after the second request is received, and a process executing unit configured to receive a third request including information related to the electronic data designated by the user through the screen displayed on the first screen based on the screen information sent by the sending unit, and cause each of the at least one program identified by the program identification information defined in the flow information stored in the first memory unit using the permission token stored in the second memory unit in accordance with the execution order defined in the flow information to execute the sequence of processes using the electronic data based on the information related to the electronic data included in the third request, after the request is received, wherein the permitting unit determines a scope of the permission token based on the flow information stored in the first memory unit in association with the app identification information.

DESCRIPTION OF THE EMBODIMENTS

The object of an embodiment of the present invention is to set an appropriate scope to an application which processes in collaboration with an external service.

Hereinafter, the embodiment of the present invention is described in detail with reference to figures.

Referring toFIG. 1, an information processing system1of the embodiment is described.FIG. 1is a diagram illustrating the system structure of an exemplary information processing system1of the embodiment.

The information processing system1illustrated inFIG. 1includes a service providing system10, an apparatus20, and an external storage system30, which are communicably coupled through a wide area network N1such as the Internet.

The service providing system10is implemented by at least one information processing apparatus and provides various services substantialized by a sequence of processes, which collaborate with an external service such as a cloud service through the network N1.

The service provided by the service providing system10of the embodiment is specifically described later. Hereinafter, the sequence of processes is referred to as a “process flow”.

Although the external service is specifically the cloud service in the embodiment, the external service is not limited to the cloud service. For example, this embodiment may be applied to various external services such as a service provided by an application service provider (ASP) and a web service, which are provided through the network.

The apparatus20is various electronic apparatuses used by the user. Said differently, the apparatus20is, for example, an image forming apparatus such as a multifunction peripheral (MFP), a personal computer (PC), a projector, an electronic whiteboard, a digital camera, or the like. The user uses the apparatus20to use various services provided by the service providing system10.

Hereinafter, when each of multiple apparatuses20are distinguished, a suffix is added such as an “apparatus201” and an “apparatus202”.

The external storage system30is a computer system providing a cloud service called a storage service or an online storage through the network N1. The storage service is a service of lending a memory area of a storage of the external storage system30.

Hereinafter, when each of multiple external storage systems30is distinguished, a suffix is added such as an “external storage system301” and an “external storage system302”. Further, the name of the storage service provided by the external storage system301is a “storage A”, and the name of the storage service provided by the external storage system302is a “storage B”.

The external storage system30may be a system implemented by multiple information processing apparatuses.

The structure of the information processing system1illustrated inFIG. 1is an example and may be another structure. For example, the information processing system1of the embodiment includes various apparatus, each of which performs at least one of an input and an output of the electronic data. These apparatuses may use various services provided by the service providing system10.

Referring toFIG. 2, described next is the hardware structure of the service providing system10included in the information processing system10of the embodiment.FIG. 2is a diagram illustrating the hardware structure of an exemplary service providing system10of the embodiment.

The service providing system10illustrated inFIG. 2includes an input device11, a display device12, an external interface (I/F)13, and a random access memory (RAM)14. Further, the service providing system10includes a read only memory (ROM)15, a central processing unit (CPU)16, a communication interface (I/F)17, and a hard disk drive (HDD)18. Each of these hardware devices is coupled by the bus B.

The input device11includes a keyboard, a mouse, a touch panel, and the like, by which the user input various operation signals. The display device12includes a display or the like to display a processed result acquired by the service providing system10. At least one of the input device11and the display device12may be in a mode of being coupled to the service providing system10so as to be used.

The communication I/F17is an interface provided to couple the service providing system10with the network N1. Thus, the service providing system10can communicate with another apparatus through the communication I/F17.

The HDD18is a non-volatile memory device storing various programs and data. The program and data stored in the HDD18are an operating system (OS), which is basic software controlling the entire service providing system10, application software providing various functions in the OS, and so on.

The service providing system10may use a drive device (e.g., a solid state drive (SSD)) using a flash memory as a memory medium in place of the HDD18. Further, the HDD18administers the stored program and the stored data using at least one of a predetermined file system and a predetermined database (DB).

The external I/F13is an interface with the external apparatus. The external apparatus is a recording medium13aor the like. With this, the service providing system10can read information from the recording medium13aand write information to the recording medium13athrough the external I/F13. The recording medium13ais a flexible disk, a compact disc (CD), a digital versatile disc (DVD), a secure digital (SD) memory card, a universal serial bus (USB) memory, or the like.

The ROM15is a non-volatile semiconductor memory which can store a program or data even when a power source is powered off. The ROM15stores a program or data such as a basic input/output system (BIOS), an OS setup, a network setup, or the like, which are executed at a time of starting up the service providing system10. The RAM14is a volatile semiconductor memory configured to temporarily store the program or the data.

The CPU16reads the program and data from the memory device such as the ROM15and the HDD18. The read program or the read data undergo a process to substantialize a control or a function of the entire service providing system10.

The service providing system10of this embodiment can substantialize various processes described below by having the above hardware structure of the service providing system10illustrated inFIG. 2.

Referring toFIG. 3, described next is the hardware structure of an image forming apparatus, which is the apparatus20included in the information processing system10of the embodiment.FIG. 3is a diagram illustrating an exemplary hardware structure of the apparatus20of the embodiment.

The apparatus20illustrated inFIG. 3includes a controller21, an operation panel22, an external interface (I/F)23, a communication I/F24, a printer25, and a scanner26. The controller21includes a central processing unit (CPU)31, a random access memory (RAM)32, a read only memory (ROM)33, a non-volatile random access memory (NVRAM)34, and a hard disk drive (HDD)35.

The ROM33is a non-volatile semiconductor memory that stores various programs and data. The RAM32is a volatile semiconductor memory configured to temporarily store the programs and the data. For example, setup information or the like is stored in the NVRAM34. The HDD35is an exemplary non-volatile memory device that stores the various programs and data.

The CPU31reads the program, the data, setup information, or the like into the RAM32from the ROM33, the NVRAM34, the HDD35, or the like, and performs the process. Thus, the CPU31is an arithmetic device substantializing an entire control or function of the apparatus20.

The operation panel22includes an input unit configured to receive an input from the user and a display unit configured to display. The external I/F23is an interface with the external apparatus. The external apparatus is a recording medium23aor the like. With this, the apparatus20can perform at least one of reading information from the recording medium23athrough the external I/F23and writing the information to the recording medium23athrough the external I/F603. The recording medium23ais, for example, an IC card, a flexible disk, a compact disc (CD), a digital versatile disc (DVD), a secure digital (SD) memory card, and a universal serial bus (USB) memory.

The communication I/F24is an interface coupling the apparatus20with the network. Thus, the apparatus20can perform data communications through the communication I/F24. The printer25is provided to print data. The scanner26is a reading device that reads an original and generates an electronic file (an image file).

The service providing system20of this embodiment includes a hardware structure illustrated inFIG. 3to substantialize various processes described below.

<Service Provided by Service Providing System>>

The service provided by the service providing system10of the embodiment is described later. Hereinafter, description is given for a case where the apparatus20is an image forming apparatus.

For example, the service providing system10provides a service (a scan delivery service), in which an electronic file generated by scanning the original in the apparatus20is subjected to an optical character recognition (OCR) process and stored in the external storage system30. Further, for example, the service providing system10of the embodiment provides a service (a cloud print service) of printing the electronic file stored in the external storage system30by the apparatus20.

Hereinafter, the description is given for a case where the service providing system10provides the scan delivery service.

However, the service provided by the service providing system10is not limited to the scan delivery service. For example, the service providing system10may provide a service of projecting the electronic file stored in the external storage system30by the projector. For example, the service providing system10may provide a service of providing the OCR process to the electronic file, which is generated by scanning the original using the apparatus20, thereafter translating to a predetermined language (for example, translation from English to Japanese), and storing the translated electronic file into the external storage system30.

Referring toFIG. 4, the functional structure of the information processing system1of the embodiment is described.FIG. 4is a diagram illustrating the functional structure of an exemplary information processing system1of the embodiment.

The apparatus20includes a browser210executed by the CPU31. The user of the apparatus20can use a service provided by the service providing system10through the browser210.

As such, the browser210may be installed on the apparatus20of the embodiment. Within the information processing system1of the embodiment, a dedicated application, which is to be used by the apparatus20in using the service provided by the service providing system10, may not be developed, for example.

Further, the apparatus20includes a permission processing unit220. The permission processing unit220is implemented when a permission app122acquired through a permission-app providing unit121(described below) is executed on the browser210. The permission processing unit220performs a process related to permission of OAuth (hereinafter, simply referred to as “permission”) for the external storage system30of app information1000(described below) in response to a user operation.

The service providing system10includes a service processing unit110, a permission servicing unit120, an authenticating unit130, a document servicing unit140, and a storage-service collaborating unit150. These units are implemented when at least one program installed on the service providing system10are executed by the CPU16.

Further, the service providing system10includes an OAuth-registration information memory unit160, a permission-token information memory unit170, and an app information memory unit180. These OAuth-registration information memory unit160, permission-token information memory unit170, and app information memory unit180may be implemented by using the HDD18. These OAuth-registration information memory unit160, permission-token information memory unit170, and app information memory unit180may be implemented by using a memory device, which is coupled to the service providing system10through the network.

The service processing unit110performs a process for substantializing various services provided by the service providing system10. The service processing unit110includes an application administering unit111, a logic processing unit112, a data I/F unit113, and a scope determining unit114.

An application (app) administering unit111administers application information1000stored in an app information memory unit180. The app administering unit111returns an app screen formed based on screen definition1100included in the app information1000in response to a request from the browser210.

With this, the application screen for using a service provided by the service providing system10is displayed on the browser210of the apparatus20. The app information1000includes the screen definition1100for causing the apparatus20to display the above app screen and a process content1200indicative of a sequence of processes substantializing the service provided by the app information1000.

Further, the app administering unit111returns the process content1200included in the app information1000in response to a request from the logic process unit112. As described above, the process content1200is the sequence of processes substantializing the service (for example, the scan delivery service) provided by the service providing system10. The process content1200is described in detail later.

The logic processing unit112acquires the process content1200included in the app information1000through the app administering unit120in response to a request received from the browser210. The logic processing unit112requests the document servicing unit, the file processing unit151, and the authenticating unit130to execute the process based on the process content1200acquired through the app administering unit111.

With this, various services provided by the service providing system10are substantialized. The logic processing unit112is described in detail later.

The data I/F unit113sends a predetermined request (for example, a request to acquire a folder view) to a data processing unit152of the storage-service collaborating unit150in response to a request received from the browser210.

The scope determining unit114determines a scope of permission of the app information1000for the external storage system30. Said differently, the scope determining unit114determines the scope of the permission token acquired by the authenticating unit130described below. The scope is information specifying a range, in which the app information1000can use the resource of the external storage system30in the service provided by the app information1000.

Here, the scope determining unit114determines an appropriate scope based on the process content1200included in the app information1000. Therefore, in the service providing system10of this embodiment, the user may not explicitly set the scope of the permission token, for example.

The permission servicing unit120causes the apparatus20to perform the process related to the permission to the external storage system30of the app information1000. The permission servicing unit includes a permission-app providing unit121and a permission app122. The permission-app providing unit121provides (sends) the permission app122to the browser210in response to a request from the browser210.

The permission app122is an application substantialized by, for example, JavaScript (“JavaScript” is a registered trademark). The above-described permission processing unit220is implemented when the permission app122is executed on the browser210.

The authenticating unit130acquires OAuth registration information from the OAuth-registration information memory unit160in response to a request from the permission processing unit220. The OAuth registration information is, for example, a permission server URL or the like in the external storage system30and is set by an administrator or the like of the information processing system1for each external storage system30, The OAuth registration information is described in detail later.

Further, the authenticating unit130acquires the permission token from the external storage system30in response to a request from the permission processing unit220. The authenticating unit130stores the acquired permission token into the permission-token information memory unit170.

With this, the service providing system10of this embodiment stores the permission token having the scope determined by the scope determining unit114. Therefore, the service providing system10of this embodiment can provide the service substantialized by the sequence of processes performed in collaboration with the external storage system30using the stored permission token.

The document servicing unit140is a program group of programs (modules) substantializing one process included in the sequence of processes that substantializes the service provided the service providing system10. The document servicing unit140includes an OCR process141of executing an OCR process for an electronic file and a print converting process142of converting the electronic file to a data format (print data), in which the apparatus20can print, for example.

The document servicing unit140may include various programs such as a program for compressing or decompressing the electronic file and a program for translating the language, for example.

The storage-service collaborating unit150requests the external storage system30to execute various processes in response to a request received from the logic processing unit112or the data I/F unit113.

Here, the service providing system10includes the storage-service collaborating units150respectively for the external storage systems30. Said differently, the service providing system10of the embodiment includes a storage-service A collaborating unit1501to request an external storage system301to execute the process. In a manner similar thereto, the service providing system10of this embodiment includes a storage-service B collaborating unit1502to request an external storage system302to execute the process.

As described, the service providing system10includes the storage-service collaborating units150respectively for the external storage systems30which process in collaboration with the corresponding storage-service collaborating unit160. Hereinafter, when the multiple storage-service collaborating units150are distinguished, individual units are designated by adding a suffix such as the “storage-service A collaborating unit1501” and the “storage-service B collaborating unit1502”.

The storage-service collaborating unit150includes the file processing unit151for receiving a request from the logic processing unit112and the data processing unit152for receiving a request from the data I/F unit113.

The file processing unit151includes a common I/F1511and a unique I/F1512, in which an application programming interface (API) for conducting an operation (e.g., an acquisition, a storage, and an edit) to the electronic file stored in the external storage system30is defined.

The common I/F1511is an API used among the multiple external storage systems30in common as, for example, the API illustrated inFIG. 5A. Said differently, the common I/F151of the file processing unit151is an API group of APIs for using a function (e.g., a file acquisition, and a file storage), which is related to a file operation and can be used by all the external storage systems30.

On the other hand, the unique I/F1512is an API used by a specific external storage system30as, for example, the API illustrated inFIG. 5B. Said differently, the unique I/F1512of the file processing unit151is an API group of APIs for using a function (e.g., a file edit), which is related to the file operation and can be used by the specific external storage system30.

Therefore, the common I/F1511is defined in a manner similar to all the storage-service collaborating units150. Meanwhile, the unique I/F1512is defined for the specific storage-service collaborating unit150, in which the API defined by the unique I/F1512can be used.

On the other hand, the data processing unit152includes a common I/F1521and a unique I/F1522, in which an API for acquiring meta data (e.g., an file view, and a folder view) of bibliographic information of the electronic file stored in the external storage system30is defined.

The common I/F1512is an API used among the multiple external storage systems30in common as, for example, the API illustrated inFIG. 5C. Said differently, the common I/F1521of the data processing unit152is an API group of APIs for using a function of a meta data acquisition, which can be used by all the external storage systems30.

On the other hand, the unique I/F1522is an API used by a specific external storage system30as, for example, the API illustrated inFIG. 5D. Said differently, the unique I/F1522of the data processing unit152is an API group of APIs for using a function of a metadata acquisition (e.g., an acquisition of the image file view), which can be used by a specific external storage system30.

Therefore, the common I/F1521is defined in a manner similar to all the storage-service collaborating units150. Meanwhile, the unique I/F1522is defined for the specific storage-service collaborating unit150, in which the API defined by the unique I/F1522can be used.

Here, a software development kit (SDK) may be used to add the storage-service collaborating unit150.

Here, the API defined by the common I/F1511and the unique I/F1512, which are illustrated inFIGS. 5A-5D, can be used by designating an “external service name (a storage service name)”. Said differently, the “storage service name” is defined as a variable portion. This situation is similarly applicable to the common I/F1521and the unique I/F1522.

The OAuth-registration information memory unit160stores an OAuth-registration information table1600, in which OAuth registration information is stored. Here, referring toFIG. 6, the OAuth-registration information table1600is described in detail.FIG. 6illustrates an exemplary OAuth-registration information table.

The OAuth-registration information stored in the OAuth-registration information table1600includes data items such as an external service identification data (ID), a client ID, a client secret, a permission server URL, and a redirect destination URL.

The external service ID is identification information uniquely identifying the external storage system30. Therefore, the OAuth registration information associating the client ID, the client secret, the permission server URL, and the redirect destination URL, which are used for the permission of OAuth for each of the external storage systems30.

A permission-token information memory unit170stores a permission-token information table1700, in which permission token information is stored. Here, referring toFIG. 7, the permission-token information table1700is described in detail.FIG. 7illustrates an exemplary permission-token information table.

The permission-token information table1700illustrated inFIG. 7includes data items such as a user ID, an app ID, the external service ID, the permission token, the scope, and an expiration date.

The user ID is identification information uniquely identifying the user of the service providing system10. The app ID is identification information uniquely identifying the app information1000. Therefore, the permission token information associates the permission token of the external storage system30, the scope of this permission token, and the expiration date of the permission token, for each user and each of the app information1000.

The app information memory unit180stores the app information1000for providing the service to the apparatus20. The app information1000includes the screen definition1100for causing the apparatus20to display an app screen and the process content1200indicative of the sequence of processes substantializing the service to be served to the apparatus20.

The app information is associated with the app ID for uniquely identifying this app information1000. Within this embodiment, the app information1000for providing the service (Scan to storage service A) in collaboration with the storage service A is designated as “app information1000A”, and the app ID of the app information1000A is designated as “app001”.

Within this embodiment, the description is given for a case where the app information includes one screen definition1100and one process content. However, the embodiment is not limited to this case and may include multiple screen definitions or multiple process contents.

Referring to process content1200A included in app information1000A is described in detail.FIG. 8illustrates an exemplary process content.

The process content1200A illustrated inFIG. 8illustrates a sequence of processes that causes an input electronic file to be provided with the OCR process, thereafter acquires the permission token of the storage service A, and delivers (uploads) the permission token to the storage service.

Said differently, in a process1201A, the electronic file is input. In a process1202A, the input electronic file is subjected to an OCR process. Similarly in a process1203A, the permission token of the storage service A is acquired. In a process1204A, the permission token is delivered to the storage service A.

With this, the service providing system10causes the apparatus20to provide the electronic file generated by scanning with the OCR process, and thereafter the scan delivery service of delivering to the storage service A can be substantialized.

The execution order of the processes defined in the process content1200A illustrated inFIG. 8is sequential from top down. Said differently, in the sequence of processes (a process flow) based on the process content1200A illustrated inFIG. 8, the processes are executed in an order of the process defined in the process1201A, the process defined in the process1202A, the process defined in the process1203A, and the process defined in the process1204A. However, the sequence of processes is not limited to this order, and information indicative of the execution order of the processes may be defined.

Next, referring toFIG. 9, a detailed functional structure of the logic processing unit112of the embodiment is described.FIG. 9is a diagram illustrating the functional structure of an exemplary information processing unit112of the embodiment.

The logic processing unit112of the embodiment includes a flow executing unit401, a component administering unit402, a component group403of components, a type conversion administering unit404, and a type conversion group405. Further, the logic processing unit112of the embodiment uses a component information table and a type-conversion information table3000.

The flow executing unit401receives an execution request to execute a process from the browser210, and then acquires the process content1200included in the app information1000through the app administering unit111. Then, the flow executing unit401requests the component to execute the process in accordance with the acquired process content1200.

Here, the component is a module or the like for executing one process from among the sequence of processes indicated by the process content1200, and is defined by, for example, a class, a function, or the like. Said differently, the sequence of processes indicated by the process content1200is substantialized by the processes executed by the component.

The component administering unit402generates the component in response to the request from the flow executing unit401. Here, the generation of the component means that the component defined by, for example, the class is deployed on the memory (for example, the RAM14).

Further, the component administering unit402returns component information stored in the component information table2000in response to a request from the scope determining unit114. Here, referring toFIG. 10, the component information table2000is described in detail.FIG. 10illustrates a structural example of the component information table.

The component information stored in the component information table2000illustrated inFIG. 10includes data items of a component name, the external service name, and the scope. Said differently, the component information is associated with the scope, which is of the external storage system and is used by each of the components in executing the process.

For example, the component name “delivery A component” is associated with the scope “aa” in the external storage system301of the external service ID “service-a”. This indicates that the scope of the permission token of the external storage system301is “aa” in order to execute the component having the component name “delivery A component”.

The scope is not set to the OCR component and the authentication A component. This is because these components do not use a resource of the external storage system30or use a resource which can be used without permission.

The component group403is a set of the components. The component group403includes a delivery A component411for delivering the electronic file to the external storage system301(the storage service A) and an authentication A component412for acquiring the permission token of the storage service A. Further, the component group403includes an OCR component413for providing the OCR process to the electronic file.

Additionally, the component group403includes a delivery B component for delivering the electronic file to an external storage system302(a storage service B) and a print conversion component for converting the electronic file to print data, for example.

Further, these components include a component common I/F410. The component common I/F410is an API defined for each component in common, and includes an API for generating the component and an API for requesting the component to execute the process.

As described, it is possible to localize an influence caused by the addition of the component because each component has the corresponding component common I/F410. Said differently, the component can be added without influencing the flow executing unit401and the component administering unit402. Therefore, the service providing system10of the embodiment can reduce a man-hour for a development such as an addition of the component.

The type conversion administering unit404administers a type conversion of the data type. A data type which can be handled by each component is previously determined. Therefore, the type conversion administering unit404generates a type conversion defined in the type conversion group405by referring to the type-conversion information table3000in response to a request from the component. The type conversion administering unit404requests to execute a type conversion process for the generated type conversion.

Here, the type conversion is a module for executing the type conversion process of the data type, and is defined by, for example, a class, a mathematical function, or a like.

Type conversion information stored in the type-conversion information table3000illustrated inFIG. 11includes data items of a data type before conversion, a data type after conversion, and a type conversion to be generated. Said differently, the type conversion information is associated with the type conversion to be generated for converting the data type before the conversion to the data type after the conversion for each of the data type before conversion and the data type after conversion.

Therefore, in a case where data are converted from a data type “InputStream” indicative of stream data to a data type “LocalFilePath” indicative of a path (an address) of an electronic file stored in the memory device or the like, it is indicated that a first type conversion is generated.

Here, the generation of the type conversion means that the type conversion defined by, for example, the class is deployed on the memory (for example, the RAM14). The data type is “File” indicative of the entity of the electronic file in addition to the above-described “InputStream” and “LocalFilePath”.

The type conversion group405is a set of the type conversions. The type conversion group405includes a first type conversion converting data of the data type “InputStream” to data of the data type “LocalFilePath”. The type conversion group405includes a second type conversion converting data of the data type “LocalFilePath” to data of the data type “File”.

Further, each of these type conversions include a type conversion common I/F420. The type conversion common I/F420is an API defined for each type conversion in common, and includes an API for generating the type conversion and an API for requesting the type conversion to execute the process.

As described, it is possible to localize an influence caused by the addition of the type conversion when each type conversion has the type conversion common I/F420. Said differently, it is possible to add the type conversion without influencing the type conversion administering unit404or the like. Therefore, the service providing system10of the embodiment can reduce a man-hour for a development such as an addition of the type conversion.

Described next is a detailed process of the information processing system of this embodiment.

Referring toFIG. 12, a process that the user permits the app information1000is described.FIG. 12is a sequence chart of an exemplary storage process of storing permission token information of the embodiment.

At first, the user operates to permit the app information1000through the browser210. Then, the browser210requests the permission-app providing unit121to acquire the permission app (step S1201). Then, the permission-app providing unit121returns the permission app12to the browser210.

The browser210executes the acquired permission app122on the browser210(step S1202). With this, the permission processing unit220is generated.

Next, the permission processing unit220requests the app administering unit111to acquire an app view (step S1203). The application administering unit111returns the app view. The app view is a view of bibliographic information of the app information1000stored in the app information memory unit180, and includes the service name and app ID, which are provided by the app information1000.

In receipt of the app view, the browser210causes a permission screen4000illustrated in, for example,FIG. 13to be displayed (step S1204). Here, the permission screen4000includes an application view4001displayed based on the app view received from the app administering unit111, and a storage service view4002for selecting the storage service. Further, the permission screen4000includes a permission button4003for permitting the application selected from the application view4001by the storage service selected from the storage service view4002.

The application view4001displays a view of application names of the app information1000. For example, the application view4001displays the application name of “Scan to storage service A” application of app information1000A or the like.

The storage service view4002displays a view of the storage service names provided by the external storage system30. For example, the storage service view4002displays the “storage service A” provided by the external storage system301, the “storage service B” provided by the external storage system302, and so on.

On the permission screen4000illustrated inFIG. 13, the user selects the application and the storage service, which are permission targets, respectively from the application view4001and the storage service view4002, and the permission button4003is operated to be pushed down. Then, the browser210receives this operation and requests the permission processing unit220to permit he selected application (step S1205).

The permission request includes the app ID of the application selected by the user from the application view4001and an external service ID of the storage service selected by the user from the storage service view4002.

Hereinafter, the description is given to a case where the user selects the “Scan to storage service A” application and the “storage service A” respectively from the application view4001and the storage service view4002, and the permission button4003is pushed down. In this case, the permission request includes the app ID “app001” of the app information1000A and the external service ID “service_a” of the external storage system301.

However, the storage service view4002may display the storage services processed in collaboration with the selected application so as to be selectable in response to the application selected from the application view4001. For example, in a case where the application processed in collaboration with the storage service A and the storage service C are selected from the application view4001, the storage service view may display the storage service A and the storage service C so as to be selectable.

The permission processing unit220receives the permission request and thereafter requests the scope determining unit114to acquire the scope (step S1206). The acquisition request includes the app ID “app001” and the external service ID “service_a” of the external storage system301.

The scope determining unit receives the acquisition request to acquire the scope, and then requests the app administering unit111to acquire the process content (step S1207). Here, this acquisition request to acquire the process content includes the app ID “app001”.

The app administering unit111receives the acquisition request to acquire the process content, and then returns the process content1200included in the app information1000of the app ID included in the acquisition request. Said differently, the app administering unit111returns the process content1200A included in the app information1000A of the app ID “app001”.

Next, the scope determining unit114requests the logic processing unit112to acquire the component information table2000(step S1208). Then, the logic processing unit112returns the component information table2000.

Subsequently, the scope determining unit114determines the scope based on the process content1200A acquired in step S1207and the component information table2000acquired in step S1208(step S1209). Then, the scope determining unit114returns the determined scope to the permission processing unit220.

Said differently, the sequence of processes indicated by the process content1200A is executed by an OCR component413corresponding to the process1202A, an OCR component412corresponding to the process1203A, and an OCR component411corresponding to the process1204A.

In the component information table2000, the scope is not set to the OCR component413and the authentication A component412. On the other hand, in the component information table2000, the scope “aa” is set the delivery A component411.

Therefore, the scope determining unit114determines the scope of the app information1000A to be “aa”. As described, the scope determining unit114determines, as the scope of the app information1000, the sum of the scopes set to each component that executes the sequence of processes indicated by the process content1200included in the app information1000as the scope of the app information1000.

Here, referring toFIG. 14, another example of determining the scope is described.FIG. 14is a diagram explaining another example of determining the scope.

For example, referring toFIG. 14, the sequence of processes indicated by the process content1200is executed by the authentication A component, the acquisition A component, the OCR component, and the delivery A component. Further, for example, the scopes of these components are respectively “-”, “bb”, “-”, and “aa”, in the component information table2000. In this case, the scope determining unit114determines the scope of the app information1000including the process content1200as “aa,bb”.

As described, the scope determining unit114determines, as the scope of the application, the sum of the scopes previously set to the components executing the processes included in the sequence of processes. Therefore, in the service providing system10of the embodiment, the scope of the application can be appropriately set (said differently, in a necessary and sufficient range).

Referring back toFIG. 12, the permission processing unit220requests the authenticating unit130to acquire the OAuth registration information (step S1210). The acquisition request to acquire the OAuth registration information includes the external service ID “service_a” of the external storage system301, with which the application (the app information1000A of the app ID “app001”) selected by the user processes in collaboration.

After the permission processing unit220receives the OAth registration information, the permission processing unit220causes the browser210to redirect to the permission server URL “http://www.OOO.com/auto” included in the permission server URL. Here, the permission server URL is a URL of an authentication screen (for example, a login screen) for performing the authentication for the corresponding external storage system30.

Next, the user inputs authentication information (for example, a user ID and a password of the external storage system301) for the authentication onto the authentication screen to authenticate. Then, the authenticating unit130requests the external storage system301to authenticate (step S1211). This authentication request of requesting the external storage system301to authenticate includes authentication information.

The external storage system301receives the authentication request and thereafter returns an authenticated result to the authentication request. Hereinafter, an explanation is given for a case where the external storage system301returns the authenticated result of the successful authentication.

Next, after the permission processing unit220receives the authenticated result indicative of the successful authentication, the permission processing unit220requests the external storage system301to permit the app information1000A (step S1211). Here, the permission request of requesting the external storage system301to permit the app information1000A includes the scope “aa” returned from the scope determining unit114, and the client ID and the redirect destination URL, which are included in the OAuth registration information acquired in step S1210.

Further, the external storage system301issues a permission code indicative of a permission response to the permission request and causes the browser210to redirect to the redirect destination URL.

After the authentication is successfully completed, a confirmation screen5000illustrated in, for example,FIG. 15may be displayed. The confirmation screen5000illustrated inFIG. 15is provided to make the user confirm that the service providing system10uses the resource within a range set by the scope in the external storage system30. Further, the permission request in step S1212may be sent to the corresponding external storage system30in a case where a button5001of “access is allowed” is pushed by the user in this external storage system30.

Next, the permission processing unit220sends the permission code acquired in step S1212to the authenticating unit130(step S1213). At this time, the permission processing unit220sends the external service ID “service_a” to the authenticating unit130.

Subsequently, after the authenticating unit130receives the permission code and the external service ID, the authenticating unit130requests the external storage system301indicated by the external service ID “service_a” to acquire the permission token (step S1214). The acquisition request of requesting to acquire the permission token includes the above permission code, and the client ID and the client secret, which are associated with the external service ID in the OAuth registration information.

Then, the external storage system301returns the permission token and the expiration date of this permission token. At this time, the external storage system301may additionally return a refresh token to acquire again the permission token in a case where the expiration date of the permission token elapses.

The authenticating unit130receives the permission token and the expiration date, and thereafter the authenticating unit130stores the permission token and the expiration date in the permission-token information table1700(step S1215). Then, the authenticating unit130stores the permission token and the expiration date in association with a scope determined using the user ID, the app ID of the app information1000being the permission target, the external service ID of the external storage system processing in collaboration with the authenticating unit130, and the scope determines by the scope determining unit114.

As described above, the service providing system10of this embodiment can perform the permission process in the external storage system30of the application (the app information1000) selected by the user. Further, in the service providing system10of the embodiment, the scope of the permission token can be appropriately set based on the process content1200included in the app information1000.

Therefore, the service providing system10can prevent a situation where the range of the scope is too narrow to execute the sequence of processes based on the app information1000from occurring, for example. Similarly, the service providing system10of the embodiment can prevent a situation where the range of the scope is too wide to generate an access to a resource in the sequence of processes based on the app information1000despite the intention of the user from occurring.

Referring toFIG. 16, described is a process in a case where the user uses the scan delivery service with the apparatus20in collaboration with the storage service A.FIG. 16is a sequence diagram of an exemplary overall process of the scan delivery service of this embodiment.

At first, the user conducts an operation of acquiring a service view provided by the service providing system10by using the browser210. Then, the browser210requests the app administering unit111to acquire the service view (step S1601).

After the app administering unit111receives the acquisition request of acquiring the service view, the app administering unit111returns the service view provided by the service providing system10. With this, the service view of services provided by the service providing system10is displayed on the operation panel22by the browser210of the apparatus20. For example, the service view includes the service and the app ID of the app information1000for providing the service of the service name.

The user selects the service desired to be used by the user from the service view displayed on the operation panel22of the apparatus20. Then, the browser210sends the application ID of the app information1000for providing the service selected by the user to the application administering unit111(step S1602). Hereinafter, description is given for a case where the user selects the service name “Scan to storage service A”. Therefore, the browser210sends the application ID “app001” of the app information1000A to the app administering unit111.

Then, the application administering unit111generates the application screen in the hypertext markup language (HTML) format based on the screen definition included in the app information1000A having the app ID “1000A” received from the browser210and sends the generated app screen to the browser210.

When the browser210receives the app screen from the app administering unit111, the browser210requests the data I/F unit113to acquire information to be displayed (step S1603). The information to be displayed is, for example, selectable elements in a selection box included, for example, the app screen. Said differently, within the embodiment, the browser210requests the data I/F unit113to acquire a folder view of the storage service A, which is a delivery destination (a storage destination) of the scan delivery.

Next, after the data I/F unit113receives an acquisition request of requesting to acquire the information to be displayed, the data I/F unit113sends the acquisition request to the data processing unit152of the storage-service collaborating unit152corresponding to this acquisition request (step S1604). Said differently, the data I/F unit113sends the acquisition request of requesting to acquire the information to be displayed to a data I/F unit1131of a storage-service A collaborating unit1501.

Next, after the data processing unit152receives the acquisition request of requesting to acquire the information to be displayed from the data I/F unit113, the data processing unit152sends a process request corresponding to the acquisition request to the corresponding external storage system30(step S1605). Said differently, a data processing unit1521sends the acquisition request of requesting to acquire the folder view to the external storage system301. Then, the browser210receives the folder view through the storage-service A collaborating unit1501.

The folder view acquired as described above is information of the folder name, the folder ID, or the like of the storage service A to be a storage destination of the electronic file in the scan delivery service in collaboration with the storage service A.

Next, the browser210causes the operation panel22to display the app screen6000illustrated inFIG. 17based on the app screen acquired from the app administering unit111in step S1602and the above-acquired folder view (step S1606).

The app screen6000illustrated inFIG. 17is provided for using the scan delivery service (Scan to storage service) collaborating with the storage service A. The app screen6000includes a file name input box6001, a storage destination folder selection box6002, and a scan execution button6003.

The file name input box6001is provided to input the file name given to the image data (the electronic file) generated by scanning in the apparatus20. The storage destination folder selection box6002is provided to select a folder at the storage destination storing the electronic file in the storage service A and is generated by the browser210based on the above-acquired folder view. The scan execution button6003is provided to execute scanning in the apparatus20to start use of the service.

The user inputs a desired file name into the file name input box6006on the app screen6000illustrated inFIG. 17and selects a desired storage destination folder in the storage destination folder selection box6002. Then, an original is set to the scanner26to the apparatus20and the scan execution button6003is pushed. Then, the browser receives these operations (step S1607).

Hereinafter, description is given for a case where the user inputs a file name “test” into the file name input box6001, a folder “FolderA” is selected in the storage destination folder selection box6002, and thereafter the scan execution button6003is pushed. With this, the original is read by the scanner26of the apparatus20and the electronic file is generated (step S1608).

Next, the browser210requests the logic processing unit112to execute the process of the scan delivery service in collaboration with the storage service A (step S1609). This execution request of requesting the logic processing unit112to execute the process of the scan delivery service includes the app ID “app001” of the app information, the electronic file generated in step S1608, and a folder ID “folder_id_b” of the storage destination folder “FolderB” of the storage service A.

Subsequently, after the logic processing unit112receives the execution request of the process, the logic processing unit112performs the execution process of the process content1200included in the app information1000of the app ID included in the execution request (step S1610). Said differently, the logic processing unit112conducts the execution process of the process content1200A included in the app information1000A of the app ID “app001”. With this, the electronic file (the electronic file generated by scanning is provided with the OCR process) having the file name of “test” is stored in the folder name “FolderB” of the storage service A.

Referring toFIG. 18, detailed process of executing the process content in step S1610is described.FIG. 18is a sequence chart of an exemplary execution process of executing the process content in the scan delivery service of the embodiment.

After the flow executing unit401receives the execution request to execute a process from the browser210, the flow executing unit401acquires the process content1200A included in the app information1000A of the app ID “app001” included in the execution request through the app administering unit111. Said differently, the flow executing unit401acquires the process content1200A through the app administering unit111.

Next, the flow executing unit401requests the component administering unit402to acquire the component in accordance with the acquired process content1200A (step S1802). Said differently, the flow executing unit401requests the component administering unit402to acquire an OCR component413based on the process1202A described next to the process1201A in a process content1200A illustrated inFIG. 8.

When the component administering unit402receives the acquisition request to acquire the OCR component413, the component administering unit402generates the OCR component413(step S1803). The OCR component413is generated by using the API for generating the component defined in the component common I/F410.

Then, the component administering unit402returns the generated OCR component413to the flow executing unit401. For example, the component administering unit402returns the address in the memory (e.g., the RAM14), on which the OCR component413is deployed, to the flow executing unit401.

The flow executing unit401requests the generated OCR component413to execute the process while designating the data (step S1804). The data type of the designated data is “InputStream”. The designated data is an electronic file transferred from the browser210.

Said differently, the flow executing unit401requests to execute the process by transferring the electronic file, which is transferred as the data type of “InputStream” from the browser210, simply as “data” (without convincing the data type) to the OCR component413. Referring toFIG. 18, this electronic file transferred without convincing the data type is simply indicated as the “data”.

After the OCR component413receives the execution request of executing the process, the OCR component413requests the type conversion administering unit404to perform the type conversion (step S1805). Here, the type conversion request includes the data and a designation of “LocalFilePath” indicative of the data type, which is operable by the OCR component413.

The type conversion administering unit404checks whether the data type of the data included in the above-received type conversion request matches the designated data type (step S1806).

Here, the data type of the data included in the received type conversion request is “InputStream” and the designated data type is “LocalFilePath”. Accordingly, the type conversion administering unit404determines that the data type of the data included in the received type conversion request does not match the designated data type.

Then, the type conversion administering unit404refers to the type conversion table3000, specifies the type conversion for converting “InputStream” to “LocalFilePath” (here, the first type conversion421is specified), and generates the specified type conversion (step S1807).

Next, the type conversion administering unit404requests the generated first type conversion421to perform the type conversion process while designating the data (step S1808).

Then, the first type conversion421receives the execution request to perform the type conversion process, and thereafter converts the data type of the data included in the execution request from “InputStream” to “LocalFilePath” (step S1809). Further, the first type conversion421returns the converted data to the type conversion administering unit404. Thereafter, the type conversion administering unit404sends the data provided with the data conversion to the OCR component413(step S1810).

When the OCR component413receives the data provided with the type conversion, the OCR component413executes the process (step S1811). Said differently, the OCR process is executed for the electronic file indicated by the data (i.e., a path or an address) of the data type of “LocalFilePath”.

More specifically, the OCR component413requests the OCR process141of the document servicing unit141to process, and the OCR process141executes the process to the electronic file. The OCR component413returns data indicative of the electronic file provided with the OCR process to the flow executing unit401.

Here, the data returned by the OCR component413is the path or the address, each of which is indicative of the electronic file provided with the OCR process (said differently, the data type of the returned data is “LocalFilePath”).

Next, the flow executing unit401requests the component administering unit402to acquire the component based on the acquired process content1200A (step S1812). Said differently, the flow executing unit401requests the component administering unit402to acquire an authentication A component412based on the process1203A described next to the process1202A in the process content1200A illustrated inFIG. 8.

After the component administering unit402receives the acquisition request to acquire the authentication A component412, the component administering unit402generates the authentication A component412(step S1813). The authentication A component412is generated by using the API for generating the component defined in the component common I/F410.

Then, the component administering unit402returns the generated authentication A component412to the flow executing unit401. For example, the component administering unit402returns the address in the memory (e.g., the RAM14), on which the authentication A component412is deployed, to the flow executing unit401.

The flow executing unit401requests the generated authentication A component412to execute the process while designating the data (step S1814). Here, the designated data has the data type of “LocalFilePath” indicating the path or the address, each of which is indicative of the electronic file provided with the OCR process.

After the authentication A component412receives the execution request of executing the process, the authentication A component412requests the type conversion administering unit404to perform the type conversion (step S1815). Here, the type conversion request includes the data and a designation of “LocalFilePath” indicative of the data type, which is operable by the authentication A component412.

The type conversion administering unit404receives the type conversion request and thereafter checks whether the data type of the data included in the above type conversion request matches the designated data type (step S1816).

Here, the data type of the data included in the received type conversion request is “LocalFilePath” and the designated data type is also “LocalFilePath”. Accordingly, the type conversion administering unit404determines that the data type of the data included in the type conversion request matches the designated data type.

Then, the type conversion administering unit404sends the data included in the type conversion request to the authentication A component412(step S1817). As described, when the data types are determined to match in checking the data type (the process of step S1816), the type conversion administering unit404does not generate the type conversion.

After the authentication A component412receives the data from the type conversion administering unit404, the authentication A component412executes the process (step S1818). Said differently, the authentication A component412acquires the corresponding permission token from the permission-token information table1700stored in the permission-token information memory unit170through the authenticating unit130.

Specifically, in a case where the user ID of the user of the apparatus20is “user001”, the authentication A component412sends this user ID, the app ID “app001”, and the external service ID “service_a” to the authenticating unit130. Then, the authenticating unit130acquires a permission token “aaaaa” corresponding to the user ID, the app ID, and the external service ID, which are received, from the permission-token information table1700and returns to the authentication A component412.

In a case where the expiration date of the permission token expires, the authenticating unit130may use a previously acquired refresh token130to acquire the permission token again, for example. In this case, the authenticating unit130returns the permission token that is acquired again to the authentication A component412.

The authentication A component412returns the data and the acquire permission token to the flow executing unit401.

Next, the flow executing unit401requests the component administering unit402to acquire the component based on the acquired process content1200A (step S1819). Said differently, the flow executing unit401requests the component administering unit402to acquire a delivery A component411based on the process1204A described next to the process1203A in a process content1200A illustrated inFIG. 8.

When the component administering unit402receives the acquisition request to acquire the delivery A component411, the component administering unit132generates the delivery A component411(step S1820). The delivery A component411is generated by using the API for generating the component defined in the component common I/F410.

Then, the component administering unit402returns the generated delivery A component411to the flow executing unit401. Said differently, the component administering unit402returns the address in the memory (e.g., the RAM14), on which the delivery A component411is deployed, to the flow executing unit401, for example.

The flow executing unit401requests the generated delivery A component411to execute the process while designating the data and the permission token (step S1821). Here, the designated data has the data type of “LocalFilePath” indicating the address or the path, each of which is indicative of the electronic file provided with the OCR process.

After the delivery A component411receives the execution request of executing the process, the delivery A component411requests the type conversion administering unit404to perform the type conversion (step S1822). Here, the type conversion request includes the data and a designation of “LocalFilePath” indicative of a data type, which is operable by the delivery A component411.

The type conversion administering unit404receives the type conversion request and thereafter checks whether the data type of the data included in the above type conversion request matches the designated data type (step S1823).

Here, the data type of the data included in the received type conversion request is “LocalFilePath” and the designated data type is also “LocalFilePath”. Accordingly, the type conversion administering unit404determines that the data type of the data included in the type conversion request matches the designated data type.

Then, the type conversion administering unit404sends the data included in the type conversion request to the delivery A component411(step S1824).

When the delivery A component411receives the data from the type conversion administering unit404, the delivery A component411executes the process (step S1825). Said differently, the delivery A component411uses the permission token to deliver the data (the electronic file having the file name “test”) to the folder having the folder name “FolderB” of the external storage system301.

Specifically, the delivery A component411sends the permission token and the data to the file processing unit1511of the storage-service A collaborating unit1501using the API of “service-a/process/folder” illustrated inFIG. 5A. With this, the electronic file (the electronic file generated by scanning is provided with the OCR process) having the file name of “test” is stored in the folder name “FolderB” of the storage service A.

The delivery A component411returns the data indicative of the processed result to the flow executing unit401.

As described above, the service providing system10of the embodiment can provide the scan delivery service to the apparatus20. Thus, the service providing system10of the embodiment causes each component of the service providing system10to execute based on the process content to execute a sequence of processes indicated by the process content1200.

In a case where the sequence of processes is executed in collaboration with the external service such as the external storage system30, the service providing system10of the embodiment uses the permission token to use the resource of the external resource in the range of the scope of the permission token.

According to the embodiment, an appropriate scope can be set to an application processed in collaboration with the external service.

The order of the method of the embodiment of the present invention is not limited to the order of processes of the method disclosed by this disclosure.